jekyll-img-srcset 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jekyll-img-srcset.rb +46 -25
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf79fa5f1ff463976c7dbde6bc5e1b405ebb92ab44cc6cd8c60060507cefa0b7
4
- data.tar.gz: 40674108c46079ffcf0cf211eda8a80f649e0b8e5baf0c3e7a1a842a90e5d170
3
+ metadata.gz: 92a18f3afa30c975e5595fb97644e09667ccb469c19fdb8ffb2641e6a6864b13
4
+ data.tar.gz: 2c87894a3a7f6f37a2f9757ebe6370818c6f2a1c7aa0514258557d5c8a4f21db
5
5
  SHA512:
6
- metadata.gz: aa7ffe7b1cf84795ca502e50fba30517b25c2cc070e499271902ff18ffd8c188e14e9ec8e9a9ccbedb7eb9e1f552e6515349078cc58e67b0aaf0dd2fd898b2c2
7
- data.tar.gz: 59256b325e7c5ba46307240c8c85ee94a0a134deaec5e44872bef72dc46b943f213ee561c4473c6823304ee5a3e8765ccbf6f8ef6f3ea35a2ffe589632c22970
6
+ metadata.gz: df94acc2e731136259369e950b9067ba4f2582b17a02e18709486346900c956206c24cb7b1c8cd7570367393358ae30aa78f77763e0bfedfbede2ff84345680c
7
+ data.tar.gz: 23acba98d8129f4f00c475b142fe5a769f565ced4362846cf21868db848218e831a24dc2b47caebffb837f6a3b2d08c8d6a74e142ad3303e8693f95a7c01ca91
@@ -1,25 +1,48 @@
1
1
  require 'mini_magick'
2
2
 
3
- def resize_image(url, widths, dest, base_image_path)
4
- image = MiniMagick::Image.open(File.join(base_image_path, url))
5
- w = image.dimensions[0]
6
- aspect = image.dimensions[1].to_f / w
7
- new_widths = widths.select {|x| x <= w}
8
- new_widths.map do |width|
9
- [width, File.join(dest, base_image_path, "#{width}", url)]
10
- end.select do |width, target|
11
- not File.exists? target
12
- end.each do |width, target|
13
- image = MiniMagick::Image.open(File.join(base_image_path, url))
14
- image.resize "#{width}x#{width*aspect}"
15
- if not Dir.exists? File.dirname(target)
16
- FileUtils.mkdir_p File.dirname(target)
3
+ # Resizes an image to provide different versions for multiple
4
+ # display resolutions
5
+ #
6
+ # @param url [String] the image's url
7
+ # @param widths [Array<Numeric>]
8
+ # target sizes to resize to;
9
+ # only widths smaller than the original width are generated
10
+ # @param base_image_path [String] the base image path. Usually assets/images
11
+ # @param cache [Jekyll::Cache]
12
+ # cache object to not resize if the computation was already done
13
+ # @return [Array<Numeric>, Numeric]
14
+ # the generated widths and the original iamge width
15
+ def resize_image(url, widths, dest, base_image_path, cache)
16
+ src_path = File.join(base_image_path, url)
17
+ new_widths, w = cache.getset(src_path) do
18
+ image = MiniMagick::Image.open(src_path)
19
+ w = image.dimensions[0]
20
+ aspect = image.dimensions[1].to_f / w
21
+ [w, aspect]
22
+ new_widths = widths.select {|x| x <= w}
23
+ new_widths.map do |width|
24
+ [width, File.join(dest, base_image_path, "#{width}", url)]
25
+ end.select do |width, target|
26
+ not File.exists? target
27
+ end.each do |width, target|
28
+ image = MiniMagick::Image.open(src_path)
29
+ image.resize "#{width}x#{width*aspect}"
30
+ if not Dir.exists? File.dirname(target)
31
+ FileUtils.mkdir_p File.dirname(target)
32
+ end
33
+ image.write target
17
34
  end
18
- image.write target
35
+ [new_widths, w]
19
36
  end
20
37
  return new_widths, w
21
38
  end
22
39
 
40
+ # Parses the argument list
41
+ #
42
+ # @param ident [String]
43
+ # the list to parse, e.g., '.someclass key="value"'
44
+ # @return [Hash]
45
+ # a hash containing the sorted values
23
46
  def parse_identifier(ident)
24
47
  i = {
25
48
  classes: [],
@@ -83,6 +106,7 @@ def format_image(ident, sizes, original_width, url, caption, title, baseurl, bas
83
106
  return content
84
107
  end
85
108
 
109
+ # Formats svg image data by providing the associated image tag
86
110
  def format_svg_image(url, ident, title, baseurl, base_image_path)
87
111
  content = "<img "
88
112
  if not ident[:style].nil?
@@ -99,6 +123,7 @@ end
99
123
  def process_page(document, payload)
100
124
  # see https://gist.github.com/mmistakes/77c68fbb07731a456805a7b473f47841
101
125
  doc_ext = document.extname.tr('.', '')
126
+ cache = Jekyll::Cache.new("jekyll-img-srcset")
102
127
  if payload['site']['markdown_ext'].include? doc_ext
103
128
  content = document.content
104
129
  base_image_path = document.site.config["base_image_path"] || "assets/images"
@@ -118,7 +143,7 @@ def process_page(document, payload)
118
143
  widths, original_width = resize_image(img['url'],
119
144
  document.site.config["widths"],
120
145
  document.site.config["destination"],
121
- base_image_path)
146
+ base_image_path, cache)
122
147
  document.site.keep_files.concat(widths.map do |w|
123
148
  File.join(base_image_path, "#{w}", img['url'])
124
149
  end)
@@ -140,12 +165,6 @@ Jekyll::Hooks.register [:pages, :posts, :documents], :pre_render do |document, p
140
165
  process_page(document, payload)
141
166
  end
142
167
 
143
- # Jekyll::Hooks.register [:pages, :posts, :documents], :post_render do |document, payload|
144
- # # puts "Post"
145
- # # puts document
146
- # process_page(document, payload)
147
- # end
148
-
149
168
  def check_in_context(context, path)
150
169
  parts = path.split(".")
151
170
  c = context.dup
@@ -161,6 +180,10 @@ end
161
180
 
162
181
  module Jekyll
163
182
  class ImgSrcsetTag < Liquid::Tag
183
+
184
+ def cache
185
+ @@cache ||= Jekyll::Cache.new("jekyll-img-srcset")
186
+ end
164
187
 
165
188
  def initialize(tag_name, text, tokens)
166
189
  super
@@ -193,13 +216,11 @@ module Jekyll
193
216
  end
194
217
  end
195
218
 
196
- #puts "fs context: #{context.find_variable('first_image')}"
197
- # puts "Prepare image: #{attrs[:src]}"
198
219
  if File.exists?(File.join base_image_path, attrs[:src])
199
220
  widths, original_width = resize_image(
200
221
  attrs[:src],
201
222
  config["widths"],
202
- config["destination"], base_image_path)
223
+ config["destination"], base_image_path, cache)
203
224
  context.registers[:site].keep_files.concat(widths.map do |w|
204
225
  File.join(base_image_path, "#{w}", attrs[:src])
205
226
  end)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-img-srcset
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan-Philipp Stauffert