jekyll-picture-tag-ng 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6cd5f67823462661b93520b765668c3da82794480e4e58a7fb6657b41920c893
4
- data.tar.gz: f76fc204106a3dc79fa40dbbb371ac988dcf6f2043a3089d2ab79b24cc6d94c7
3
+ metadata.gz: 9b13b667958ab46916ceda313a2dec27a6d824e9e567fc68faa369734cd56272
4
+ data.tar.gz: 390e2ab18a416bf1e3e3523d18d6fe5b94a1a2a5bbf7b05a2a6cec8fcbddb8b9
5
5
  SHA512:
6
- metadata.gz: 5ea82a06e9626494f78b35a962733ff979f4c9b9c956e56a120290cc9c24930c10b7db29d409c0ec73741100341e5fce63be1d92b86fa54907847975dc4b0f0a
7
- data.tar.gz: d967db3c36973c4eb29cca8c45a39b16c8cb9ece0003663c3ac2c11dd24435421d3b87248c15eca243a6cd333b820c7c591ec077e1c3de365efed46e2dd427f5
6
+ metadata.gz: 39af2751eab33d119cb9f494e99bf387a542dd397bbc098ab346075100608263040412036f85618a8d5eca60a98fa6c584a3cd2acfb271d9b9e1e4a27f277790
7
+ data.tar.gz: ac269bf8ed4c504e7139b2b16eb6078ba3f3105c67a95a6d55371cda449f8a51f9c5bf7a9d061d69895bf66087bd6b81fbc5a7bdab7ee81008e658ab7ebe1eed
data/README.md CHANGED
@@ -159,6 +159,25 @@ to the following HTML :
159
159
  </picture>
160
160
  ```
161
161
 
162
+ #### Extra `convert` arguments
163
+
164
+ The `extra_convert_args` and `pre_extra_convert_args` options allow you to add any [`convert` argument](https://imagemagick.org/script/convert.php) to the image conversion processes. The `pre_extra_convert_args` will be added before the resize operation, and the `extra_convert_args` after the resize operation. These options must be either arrays of strings or a string that will be split on spaces. This can be used to add a watermark to all your pictures (see example below).
165
+
166
+ Additionally, you can set different values based on the version for both these options. In the example below, the `m` version of output pictures will be blurred :
167
+
168
+ ```yaml
169
+ picture_tag_ng:
170
+ pre_extra_convert_args: ["-font", "DejaVu-Sans-Book", "-pointsize", "72",
171
+ "-fill", "black", "-annotate", "+25+75", "Watermark"] # Add watermark to all output pics
172
+ picture_versions:
173
+ m:
174
+ out_size: 700
175
+ extra_convert_args: ["-scale", "20%", "-blur", "0x2.5", "-resize", "500%"] # Blur `m` pics
176
+ s: 400
177
+ ```
178
+
179
+ You can disable the default resize operation by setting `replace_convert_args: true` either at the plugin level or at the version level. If the, the version-specific value will override the plugin-global value.
180
+
162
181
  ## Development
163
182
 
164
183
  After cloning the repo, you can run the following commands in a local Jekyll website's folder to start hacking on the code of `jekyll-picture-tag-ng` (you'll need to replace the path in the second command) :
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module PictureTag
5
- VERSION = "0.4.0"
5
+ VERSION = "0.5.0"
6
6
  end
7
7
  end
@@ -16,7 +16,9 @@ module Jekyll
16
16
  "s" => "400",
17
17
  "m" => "700"
18
18
  },
19
- "background_color" => "FFFFFF"
19
+ "background_color" => "FFFFFF",
20
+ "extra_convert_args" => [],
21
+ "replace_convert_args" => false
20
22
  }.freeze
21
23
 
22
24
  class Error < StandardError; end
@@ -39,33 +41,75 @@ module Jekyll
39
41
  @config ||= CONFIG.merge(@site.config["picture_tag_ng"] || {})
40
42
  end
41
43
 
44
+ def replace_args
45
+ result = config["replace_convert_args"]
46
+ if picture_versions[@version].is_a?(Hash) &&
47
+ !picture_versions[@version]["replace_convert_args"].nil?
48
+ result = picture_versions[@version]["replace_convert_args"]
49
+ end
50
+ result
51
+ end
52
+
42
53
  def picture_versions
43
54
  config["picture_versions"]
44
55
  end
45
56
 
57
+ def as_args(input)
58
+ if input.is_a?(Array)
59
+ input.clone
60
+ elsif input.is_a?(String)
61
+ input.split(" ")
62
+ else
63
+ raise(
64
+ TypeError,
65
+ "[jekyll-picture-tag-ng] `extra_convert_args` must be an array or a string"
66
+ )
67
+ end
68
+ end
69
+
70
+ def convert_args
71
+ @convert_args ||= as_args(config["extra_convert_args"]).concat(
72
+ picture_versions[@version].is_a?(Hash) &&
73
+ picture_versions[@version]["extra_convert_args"] || []
74
+ )
75
+ end
76
+
77
+ def pre_convert_args
78
+ @pre_convert_args ||= as_args(config["pre_extra_convert_args"]).concat(
79
+ picture_versions[@version].is_a?(Hash) &&
80
+ picture_versions[@version]["pre_extra_convert_args"] || []
81
+ )
82
+ end
83
+
46
84
  def picture?
47
85
  extname =~ /(\.jpg|\.jpeg|\.webp)$/i
48
86
  end
49
87
 
50
88
  def destination(dest)
51
89
  output_dir = File.join("img", @version, @dir)
52
- output_basename = @site.in_dest_dir(@site.dest, File.join(output_dir, "#{basename}.#{@pictype}"))
90
+ output_basename = @site.in_dest_dir(
91
+ @site.dest,
92
+ File.join(output_dir, "#{basename}.#{@pictype}")
93
+ )
53
94
  FileUtils.mkdir_p(File.dirname(output_dir))
54
95
  @destination ||= {}
55
96
  @destination[dest] ||= output_basename
56
97
  end
57
98
 
58
99
  def popen_args(dest_path)
59
- args = ["convert", @path, "-resize", "#{@picture_dim}x>"]
100
+ args = ["convert", @path]
101
+ args.concat pre_convert_args
102
+ args.concat ["-resize", "#{@picture_dim}x>"] unless replace_args
60
103
  if @pictype == "jpg"
61
104
  args.concat ["-background", "##{@config["background_color"]}",
62
105
  "-flatten", "-alpha", "off"]
63
106
  end
107
+ args.concat convert_args
64
108
  args.push dest_path
65
109
  end
66
110
 
67
111
  def copy_file(dest_path)
68
- Jekyll.logger.debug "copy_file : #{path} -> #{dest_path}"
112
+ Jekyll.logger.debug "copy_file : #{path} -> #{dest_path} (#{popen_args(dest_path)})"
69
113
  p = IO.popen(popen_args(dest_path))
70
114
  p.close
71
115
  File.utime(self.class.mtimes[path], self.class.mtimes[path], dest_path)
@@ -225,21 +269,17 @@ module Kramdown
225
269
  end
226
270
 
227
271
  def media_attribute(version)
228
- if version == default_pic_version
229
- ""
230
- else
231
- geometry = picture_versions[version]
232
- if geometry.is_a?(Hash)
233
- if geometry["media"].is_a?(String)
234
- "media=\"#{geometry["media"]}\""
235
- elsif geometry["media"].is_a?(Integer)
236
- "media=\"(max-width: #{geometry["media"]}px)\""
237
- else
238
- "media=\"(max-width: #{geometry["out_size"]}px)\""
239
- end
272
+ geometry = picture_versions[version]
273
+ if geometry.is_a?(Hash)
274
+ if geometry["media"].is_a?(String)
275
+ "media=\"#{geometry["media"]}\""
276
+ elsif geometry["media"].is_a?(Integer)
277
+ "media=\"(max-width: #{geometry["media"]}px)\""
240
278
  else
241
- "media=\"(max-width: #{geometry}px)\""
279
+ "media=\"(max-width: #{geometry["out_size"]}px)\""
242
280
  end
281
+ else
282
+ "media=\"(max-width: #{geometry}px)\""
243
283
  end
244
284
  end
245
285
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-picture-tag-ng
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pcouy