jekyll-images 0.2.7 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9343975c53eefd5a9e88ed8ef249455a5fc82ca6ae5ba5b36ce46f369ee0d24b
4
- data.tar.gz: 2ab5924b0216ff9354bb404316f43b09448431d04fcfe9ae5233ca4da347f8a8
3
+ metadata.gz: 940d7564e5f46ba24c22eec51f474252fc5f23445f37f2589a05788c2b107e55
4
+ data.tar.gz: 3fdb9012e009324edac12a65d2550dedb93cb4bf899d50ce011a0849c23fc44a
5
5
  SHA512:
6
- metadata.gz: 52d5e60cc1edfb8e5a72dcbdbfaf062d51846fe0a281103ece714fc5251ee75d9c3f9c19ee3ac7e137c147f8a9a56b3c79fde6df28488f353923cc0b623f96a1
7
- data.tar.gz: fccc5454c030535ace052d299c4f34b419d6d698aa3ff24fd3447adc52414118bb144204bdccf7ce04dd89f00b13be1200f8d3e823e20b9579ac9b1cef8d93ef
6
+ metadata.gz: f1b872ea8903b49b10efe560c0d568debcdfb937a8efbdb6059f238251ab71279d78056479d756cbc7c6bef34577e23c09e22c0ce97ff73d1e2ec0e853b31a49
7
+ data.tar.gz: 59136867e0841097770b5ae7f3a774f8a4d6934445dcc0bf8e47ab6df4104bd70d34061eb88ac0bcf0c7ef6c53a4b30c970f959164700a41cb4a501008593772
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module Filters
5
+ # Obtain image height
6
+ module Height
7
+ def height(input)
8
+ return unless input
9
+ input = @context.registers[:site].in_source_dir input
10
+
11
+ unless ::File.exist? input
12
+ Jekyll.logger.warn "File doesn't exist #{input}"
13
+ return input
14
+ end
15
+
16
+ Jekyll::Images::Cache.cached_image(input).height
17
+ rescue Vips::Error => e
18
+ Jekyll.logger.warn "Failed to process #{input}: #{e.message}"
19
+ nil
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ Liquid::Template.register_filter(Jekyll::Filters::Height)
@@ -4,13 +4,17 @@ module Jekyll
4
4
  module Filters
5
5
  # Liquid filter for use in templates
6
6
  module Thumbnail
7
- @@cached_images = {}
8
-
9
7
  # Generates a thumbnail and returns its alternate destination
10
8
  def thumbnail(input, width = nil, height = nil, crop = nil, auto_rotate = nil)
11
9
  return unless input
10
+ input = @context.registers[:site].in_source_dir input
11
+
12
+ unless ::File.exist? input
13
+ Jekyll.logger.warn "File doesn't exist #{input}"
14
+ return input
15
+ end
12
16
 
13
- image = cached_image input
17
+ image = Jekyll::Images::Cache.cached_image input
14
18
  thumb = image.thumbnail(width: width,
15
19
  height: height,
16
20
  crop: crop,
@@ -18,21 +22,11 @@ module Jekyll
18
22
 
19
23
  thumb.write && thumb.optimize
20
24
 
21
- thumb.dest
25
+ thumb.url
22
26
  rescue Vips::Error => e
23
27
  Jekyll.logger.warn "Failed to process #{input}: #{e.message}"
24
28
  input
25
29
  end
26
-
27
- private
28
-
29
- def cached_image?(input)
30
- @@cached_images.key? input
31
- end
32
-
33
- def cached_image(input)
34
- @@cached_images[input] ||= Jekyll::Images::Image.new(@context.registers[:site], input)
35
- end
36
30
  end
37
31
  end
38
32
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module Filters
5
+ # Obtain image width
6
+ module Width
7
+ def width(input)
8
+ return unless input
9
+ input = @context.registers[:site].in_source_dir input
10
+
11
+ unless ::File.exist? input
12
+ Jekyll.logger.warn "File doesn't exist #{input}"
13
+ return input
14
+ end
15
+
16
+ Jekyll::Images::Cache.cached_image(input).width
17
+ rescue Vips::Error => e
18
+ Jekyll.logger.warn "Failed to process #{input}: #{e.message}"
19
+ nil
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ Liquid::Template.register_filter(Jekyll::Filters::Width)
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module Images
5
+ # Cache
6
+ class Cache
7
+ class << self
8
+ attr_accessor :site
9
+
10
+ def cached_images
11
+ @cached_images ||= {}
12
+ end
13
+
14
+ def cached_image?(input)
15
+ cached_images.key? input
16
+ end
17
+
18
+ def cached_image(input)
19
+ cached_images[input] ||= Jekyll::Images::Image.new(site, input)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -50,6 +50,10 @@ module Jekyll
50
50
  end
51
51
  end
52
52
 
53
+ def url
54
+ static_file.url
55
+ end
56
+
53
57
  def thumbnail?
54
58
  image.width > width
55
59
  end
@@ -78,9 +82,7 @@ module Jekyll
78
82
 
79
83
  # Add it to the static files so Jekyll copies them. Once they
80
84
  # are written they're copied when the site is loaded.
81
- site.static_files << Jekyll::StaticFile.new(site, site.source,
82
- File.dirname(dest),
83
- File.basename(dest))
85
+ site.static_files << static_file
84
86
 
85
87
  # The file was updated, so it exists and is newer than source
86
88
  !write?
@@ -96,6 +98,14 @@ module Jekyll
96
98
 
97
99
  Jekyll.logger.info "Reduced #{dest} from #{before} to #{after} bytes (%#{pct})"
98
100
  end
101
+
102
+ def relative_path
103
+ @relative_path ||= dest.sub(site.source, '').sub(%r{\A/}, '')
104
+ end
105
+
106
+ def static_file
107
+ @static_file ||= Jekyll::StaticFile.new(site, site.source, File.dirname(relative_path), File.basename(relative_path))
108
+ end
99
109
  end
100
110
  end
101
111
  end
data/lib/jekyll-images.rb CHANGED
@@ -1,7 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'jekyll/images/cache'
4
+
5
+ Jekyll::Images::Cache.site = Jekyll.sites.first
6
+
3
7
  require_relative 'jekyll/images/image'
4
8
  require_relative 'jekyll/images/thumbnail'
5
9
  require_relative 'jekyll/filters/thumbnail'
10
+ require_relative 'jekyll/filters/width'
11
+ require_relative 'jekyll/filters/height'
6
12
  require_relative 'jekyll/images/oxipng'
7
13
  require_relative 'jekyll/images/jpeg_optim'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-images
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - f
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-28 00:00:00.000000000 Z
11
+ date: 2021-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -64,7 +64,10 @@ files:
64
64
  - LICENSE
65
65
  - README.md
66
66
  - lib/jekyll-images.rb
67
+ - lib/jekyll/filters/height.rb
67
68
  - lib/jekyll/filters/thumbnail.rb
69
+ - lib/jekyll/filters/width.rb
70
+ - lib/jekyll/images/cache.rb
68
71
  - lib/jekyll/images/image.rb
69
72
  - lib/jekyll/images/jpeg_optim.rb
70
73
  - lib/jekyll/images/oxipng.rb
@@ -100,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
103
  - !ruby/object:Gem::Version
101
104
  version: '0'
102
105
  requirements: []
103
- rubygems_version: 3.0.3
106
+ rubygems_version: 3.1.2
104
107
  signing_key:
105
108
  specification_version: 4
106
109
  summary: Optimizes images for Jekyll