middleman-images 0.1.0 → 0.2.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 +4 -4
- data/.rufo +1 -0
- data/.travis.yml +7 -7
- data/CHANGELOG.md +9 -1
- data/Gemfile +10 -18
- data/Gemfile.lock +5 -19
- data/README.md +22 -25
- data/features/building.feature +3 -1
- data/features/images_dir.feature +33 -0
- data/features/proxy_resources.feature +39 -0
- data/features/support/env.rb +3 -3
- data/features/support/middleman_images_steps.rb +12 -6
- data/fixtures/image/source/assets/images/fox.jpg +0 -0
- data/gemfiles/Gemfile.middleman-4.1 +10 -20
- data/gemfiles/Gemfile.middleman-4.1.lock +1 -17
- data/gemfiles/Gemfile.middleman-4.2 +10 -20
- data/gemfiles/Gemfile.middleman-4.2.lock +1 -17
- data/gemfiles/Gemfile.middleman-4.3 +10 -20
- data/gemfiles/Gemfile.middleman-4.3.lock +1 -17
- data/gemfiles/Gemfile.middleman-5.0-rc +10 -20
- data/gemfiles/Gemfile.middleman-5.0-rc.lock +2 -18
- data/lib/middleman-images/extension.rb +38 -52
- data/lib/middleman-images/image.rb +38 -24
- data/lib/middleman-images/manipulator.rb +36 -9
- data/lib/middleman-images/version.rb +1 -1
- data/middleman-images.gemspec +18 -14
- metadata +22 -8
- data/Rakefile +0 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f00d10aeb0db6ab714537b15b0d07a71e034a08b45e7fc5e8dcdfa9713abdc3d
|
|
4
|
+
data.tar.gz: aa863f277ff04b872d6641275a3ca5444c888037f2d56c47ee1f3a99ee1f5098
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e89daa6f803d8687fc89477e12d5986d10187c6adccf891a819f5be58cd49a7af2000c1f606fe0ea7e76dadebf7284bffa1f0de435e3216b6a59401f4a65847a
|
|
7
|
+
data.tar.gz: 990ee4608b982912eaa3973beaaf898c9f90eb2c36556a66960c7ae9f8ce38e730e745ef1c1bf3f727b0ef1934af09434e172c76da74661a56149df1b9239471
|
data/.rufo
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
includes [gemfiles/Gemfile.*[!l][!o][!c][!k]]
|
data/.travis.yml
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
language: ruby
|
|
2
|
-
|
|
3
2
|
cache: bundler
|
|
4
|
-
before_script:
|
|
5
|
-
|
|
3
|
+
before_script: gem install bundler:1.17.3
|
|
4
|
+
script: bundle exec cucumber
|
|
5
|
+
|
|
6
6
|
rvm:
|
|
7
7
|
- 2.7
|
|
8
8
|
- 2.6
|
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
gemfile: gemfiles/Gemfile.middleman-4.2
|
|
24
24
|
- rvm: 2.7
|
|
25
25
|
gemfile: gemfiles/Gemfile.middleman-4.1
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
script: bundle exec
|
|
26
|
+
include:
|
|
27
|
+
- rvm: 2.7
|
|
28
|
+
gemfile: Gemfile
|
|
29
|
+
script: bundle exec rufo -c .
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.2.0] - 2020-08-05
|
|
10
|
+
### Added
|
|
11
|
+
- Support for Middleman 5 RC
|
|
12
|
+
### Changed
|
|
13
|
+
- We changed the way images get registered while running the Middleman server.
|
|
14
|
+
This should bring way better performance and make this Gem usable in server mode.
|
|
15
|
+
|
|
9
16
|
## [0.1.0] - 2020-02-05
|
|
10
17
|
### Added
|
|
11
18
|
- Do not resize SVG or GIF files.
|
|
@@ -28,5 +35,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
28
35
|
### Removed
|
|
29
36
|
- Removed support for Ruby < 2.5
|
|
30
37
|
|
|
31
|
-
[Unreleased]: https://github.com/zweitag/middleman-images/compare/v0.
|
|
38
|
+
[Unreleased]: https://github.com/zweitag/middleman-images/compare/v0.2.0...HEAD
|
|
39
|
+
[0.2.0]: https://github.com/zweitag/middleman-images/compare/v0.1.0...v0.2.0
|
|
32
40
|
[0.1.0]: https://github.com/zweitag/middleman-images/releases/tag/v0.1.0
|
data/Gemfile
CHANGED
|
@@ -1,26 +1,18 @@
|
|
|
1
1
|
# If you do not have OpenSSL installed, update
|
|
2
2
|
# the following line to use "http://" instead
|
|
3
|
-
source
|
|
3
|
+
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
# Specify your gem's dependencies in middleman-images.gemspec
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
gem 'middleman', '~> 4.3'
|
|
10
|
-
gem 'rake'
|
|
11
|
-
gem 'rdoc'
|
|
12
|
-
gem 'yard'
|
|
13
|
-
end
|
|
8
|
+
gem "middleman", "~> 4.3"
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
gem 'rspec'
|
|
10
|
+
gem "aruba"
|
|
11
|
+
gem "capybara"
|
|
12
|
+
gem "cucumber"
|
|
13
|
+
gem "rufo"
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
gem 'image_optim_pack', '=0.6.0'
|
|
26
|
-
end
|
|
15
|
+
gem "image_optim"
|
|
16
|
+
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
17
|
+
gem "image_optim_pack", "=0.6.0"
|
|
18
|
+
gem "mini_magick"
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
middleman-images (0.
|
|
4
|
+
middleman-images (0.2.0)
|
|
5
5
|
middleman-core (>= 4.1.14)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -125,7 +125,7 @@ GEM
|
|
|
125
125
|
minitest (5.14.0)
|
|
126
126
|
multi_json (1.14.1)
|
|
127
127
|
multi_test (0.1.2)
|
|
128
|
-
nokogiri (1.10.
|
|
128
|
+
nokogiri (1.10.8)
|
|
129
129
|
mini_portile2 (~> 2.4.0)
|
|
130
130
|
padrino-helpers (0.13.3.4)
|
|
131
131
|
i18n (~> 0.6, >= 0.6.7)
|
|
@@ -136,28 +136,18 @@ GEM
|
|
|
136
136
|
parallel (1.19.1)
|
|
137
137
|
progress (3.5.2)
|
|
138
138
|
public_suffix (4.0.3)
|
|
139
|
-
rack (2.
|
|
139
|
+
rack (2.2.3)
|
|
140
140
|
rack-test (1.1.0)
|
|
141
141
|
rack (>= 1.0, < 3)
|
|
142
|
-
rake (13.0.1)
|
|
143
142
|
rb-fsevent (0.10.3)
|
|
144
143
|
rb-inotify (0.10.1)
|
|
145
144
|
ffi (~> 1.0)
|
|
146
|
-
rdoc (6.2.1)
|
|
147
145
|
regexp_parser (1.6.0)
|
|
148
|
-
rspec (3.9.0)
|
|
149
|
-
rspec-core (~> 3.9.0)
|
|
150
|
-
rspec-expectations (~> 3.9.0)
|
|
151
|
-
rspec-mocks (~> 3.9.0)
|
|
152
|
-
rspec-core (3.9.1)
|
|
153
|
-
rspec-support (~> 3.9.1)
|
|
154
146
|
rspec-expectations (3.9.0)
|
|
155
147
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
156
148
|
rspec-support (~> 3.9.0)
|
|
157
|
-
rspec-mocks (3.9.1)
|
|
158
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
159
|
-
rspec-support (~> 3.9.0)
|
|
160
149
|
rspec-support (3.9.2)
|
|
150
|
+
rufo (0.12.0)
|
|
161
151
|
sassc (2.2.1)
|
|
162
152
|
ffi (~> 1.9)
|
|
163
153
|
servolux (0.13.0)
|
|
@@ -171,7 +161,6 @@ GEM
|
|
|
171
161
|
execjs (>= 0.3.0, < 3)
|
|
172
162
|
xpath (3.2.0)
|
|
173
163
|
nokogiri (~> 1.8)
|
|
174
|
-
yard (0.9.24)
|
|
175
164
|
|
|
176
165
|
PLATFORMS
|
|
177
166
|
ruby
|
|
@@ -185,10 +174,7 @@ DEPENDENCIES
|
|
|
185
174
|
middleman (~> 4.3)
|
|
186
175
|
middleman-images!
|
|
187
176
|
mini_magick
|
|
188
|
-
|
|
189
|
-
rdoc
|
|
190
|
-
rspec
|
|
191
|
-
yard
|
|
177
|
+
rufo
|
|
192
178
|
|
|
193
179
|
BUNDLED WITH
|
|
194
180
|
2.1.4
|
data/README.md
CHANGED
|
@@ -43,37 +43,34 @@ For more information check [`image_optim_pack`](https://github.com/toy/image_opt
|
|
|
43
43
|
To activate the extension just put this into your `config.rb`:
|
|
44
44
|
|
|
45
45
|
```ruby
|
|
46
|
-
|
|
47
|
-
activate :images
|
|
48
|
-
end
|
|
46
|
+
activate :images
|
|
49
47
|
```
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
With Middleman images activated, starting the Middleman server will take some time.
|
|
50
|
+
During that time images that need procssing will get registered.
|
|
51
|
+
The actual processing of the images takes place while navigating the page.
|
|
53
52
|
|
|
54
53
|
Configure the extension by passing a block to `:activate`:
|
|
55
54
|
|
|
56
55
|
```ruby
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
end
|
|
56
|
+
activate :images do |images|
|
|
57
|
+
# Do not include original images in the build (default: false)
|
|
58
|
+
images.ignore_original = true
|
|
59
|
+
|
|
60
|
+
# Specify another cache directory depending on your root directory (default: 'cache')
|
|
61
|
+
images.cache_dir = 'funky_cache/subdir_of_funky_cache'
|
|
62
|
+
|
|
63
|
+
# Optimize images (default: false)
|
|
64
|
+
images.optimize = true
|
|
65
|
+
|
|
66
|
+
# Provide additional options for image_optim
|
|
67
|
+
# See https://github.com/toy/image_optim for all available options
|
|
68
|
+
images.image_optim = {
|
|
69
|
+
nice: 20,
|
|
70
|
+
optipng: {
|
|
71
|
+
level: 5,
|
|
72
|
+
},
|
|
73
|
+
}
|
|
77
74
|
end
|
|
78
75
|
```
|
|
79
76
|
|
data/features/building.feature
CHANGED
|
@@ -31,8 +31,10 @@ Feature: Building images
|
|
|
31
31
|
"""
|
|
32
32
|
And the Server is running
|
|
33
33
|
And I go to "/first.html"
|
|
34
|
+
And I go to "/images/fox-opt.jpg"
|
|
34
35
|
And a modification time for a file named "cache/images/fox-opt.jpg"
|
|
35
|
-
|
|
36
|
+
And I go to "/second.html"
|
|
37
|
+
When I go to "/images/fox-opt.jpg"
|
|
36
38
|
Then the file "cache/images/fox-opt.jpg" should exist
|
|
37
39
|
Then the file "cache/images/fox-opt.jpg" should not have been updated
|
|
38
40
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
Feature: images_dir configuration given
|
|
2
|
+
|
|
3
|
+
Scenario: Building correctly
|
|
4
|
+
Given a fixture app "image"
|
|
5
|
+
And a middleman configuration with:
|
|
6
|
+
"""
|
|
7
|
+
set :images_dir, 'assets/images'
|
|
8
|
+
"""
|
|
9
|
+
And our extension is enabled
|
|
10
|
+
And a template named "index.html.erb" with:
|
|
11
|
+
"""
|
|
12
|
+
<%= image_tag 'fox.jpg', optimize: true, resize: 400 %>
|
|
13
|
+
"""
|
|
14
|
+
When a successfully built app at "image"
|
|
15
|
+
When I cd to "build/assets/images"
|
|
16
|
+
Then a file named "fox-400-opt.jpg" should exist
|
|
17
|
+
|
|
18
|
+
Scenario: Running correctly
|
|
19
|
+
Given a fixture app "image"
|
|
20
|
+
And a middleman configuration with:
|
|
21
|
+
"""
|
|
22
|
+
set :images_dir, 'assets/images'
|
|
23
|
+
"""
|
|
24
|
+
And our extension is enabled
|
|
25
|
+
And a template named "index.html.erb" with:
|
|
26
|
+
"""
|
|
27
|
+
<%= image_tag 'fox.jpg', optimize: true, resize: 400 %>
|
|
28
|
+
"""
|
|
29
|
+
And the Server is running
|
|
30
|
+
When I go to "/index.html"
|
|
31
|
+
Then I should see '<img src="/assets/images/fox-400-opt.jpg" alt="Fox" />'
|
|
32
|
+
When I go to "/assets/images/fox-400-opt.jpg"
|
|
33
|
+
Then the status code should be "200"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
|
|
2
|
+
Feature: Proxy resources
|
|
3
|
+
|
|
4
|
+
Scenario: Resizing images for a proxy resource on build
|
|
5
|
+
Given a fixture app "image"
|
|
6
|
+
And a middleman configuration with:
|
|
7
|
+
"""
|
|
8
|
+
activate :i18n, langs: [:en, :de], mount_at_root: false
|
|
9
|
+
"""
|
|
10
|
+
And our extension is enabled
|
|
11
|
+
And a template named "localizable/index.html.erb" with:
|
|
12
|
+
"""
|
|
13
|
+
<%= image_tag 'fox.jpg', resize: (I18n.locale == :en ? 400 : 500) %>
|
|
14
|
+
"""
|
|
15
|
+
When a successfully built app at "image"
|
|
16
|
+
When I cd to "build/images"
|
|
17
|
+
Then a file named "fox-400.jpg" should exist
|
|
18
|
+
And a file named "fox-500.jpg" should exist
|
|
19
|
+
|
|
20
|
+
Scenario: Resizing images for a proxy resource on server
|
|
21
|
+
Given a fixture app "image"
|
|
22
|
+
And a middleman configuration with:
|
|
23
|
+
"""
|
|
24
|
+
activate :i18n, langs: [:en, :de], mount_at_root: false
|
|
25
|
+
"""
|
|
26
|
+
And our extension is enabled
|
|
27
|
+
And a template named "localizable/index.html.erb" with:
|
|
28
|
+
"""
|
|
29
|
+
<%= image_tag 'fox.jpg', resize: (I18n.locale == :en ? 400 : 500) %>
|
|
30
|
+
"""
|
|
31
|
+
And the Server is running
|
|
32
|
+
When I go to "/en/index.html"
|
|
33
|
+
Then I should see '<img src="/images/fox-400.jpg" alt="Fox" />'
|
|
34
|
+
When I go to "/images/fox-400.jpg"
|
|
35
|
+
Then the status code should be "200"
|
|
36
|
+
When I go to "/de/index.html"
|
|
37
|
+
Then I should see '<img src="/images/fox-500.jpg" alt="Fox" />'
|
|
38
|
+
When I go to "/images/fox-500.jpg"
|
|
39
|
+
Then the status code should be "200"
|
data/features/support/env.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require File.join(PROJECT_ROOT_PATH,
|
|
2
|
+
require "middleman-core"
|
|
3
|
+
require "middleman-core/step_definitions"
|
|
4
|
+
require File.join(PROJECT_ROOT_PATH, "lib", "middleman-images")
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "mini_magick"
|
|
2
|
+
|
|
3
|
+
Given /^a middleman configuration with:$/ do |config|
|
|
4
|
+
@middleman_config = config
|
|
5
|
+
end
|
|
2
6
|
|
|
3
7
|
Given /^our extension is enabled?$/ do
|
|
4
|
-
step
|
|
8
|
+
step "our extension is enabled with:", ""
|
|
5
9
|
end
|
|
6
10
|
|
|
7
11
|
Given /^our extension is enabled with:$/ do |config|
|
|
8
|
-
config = """
|
|
12
|
+
config = "" "
|
|
13
|
+
#{@middleman_config}
|
|
14
|
+
|
|
9
15
|
activate :images do |config|
|
|
10
16
|
config.image_optim = {
|
|
11
17
|
pngout: false,
|
|
@@ -13,7 +19,7 @@ Given /^our extension is enabled with:$/ do |config|
|
|
|
13
19
|
}
|
|
14
20
|
#{config}
|
|
15
21
|
end
|
|
16
|
-
"""
|
|
22
|
+
" ""
|
|
17
23
|
step 'a file named "config.rb" with:', config
|
|
18
24
|
end
|
|
19
25
|
|
|
@@ -23,9 +29,9 @@ Then /^the dimensions should be (\d+)x(\d+)$/ do |x, y|
|
|
|
23
29
|
end
|
|
24
30
|
|
|
25
31
|
Then /^the content length should be equal to the file size of "([^\"]*)"$/ do |file|
|
|
26
|
-
expect(page.response_headers[
|
|
32
|
+
expect(page.response_headers["Content-Length"].to_i).to eq File.size(expand_path(file))
|
|
27
33
|
end
|
|
28
34
|
|
|
29
35
|
Then /^the content length should be smaller than the file size of "([^\"]*)"$/ do |file|
|
|
30
|
-
expect(page.response_headers[
|
|
36
|
+
expect(page.response_headers["Content-Length"].to_i).to be < File.size(expand_path(file))
|
|
31
37
|
end
|
|
Binary file
|
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
# If you do not have OpenSSL installed, update
|
|
2
2
|
# the following line to use "http://" instead
|
|
3
|
-
source
|
|
3
|
+
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
# Specify your gem's dependencies in middleman-images.gemspec
|
|
6
|
-
gemspec path:
|
|
6
|
+
gemspec path: ".."
|
|
7
7
|
|
|
8
|
+
gem "middleman", "~> 4.1.0"
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
gem 'rdoc'
|
|
13
|
-
gem 'yard'
|
|
14
|
-
end
|
|
10
|
+
gem "aruba"
|
|
11
|
+
gem "capybara"
|
|
12
|
+
gem "cucumber"
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
gem 'rspec'
|
|
21
|
-
|
|
22
|
-
gem 'image_optim'
|
|
23
|
-
gem 'mini_magick'
|
|
24
|
-
|
|
25
|
-
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
26
|
-
gem 'image_optim_pack', '=0.6.0'
|
|
27
|
-
end
|
|
14
|
+
gem "image_optim"
|
|
15
|
+
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
16
|
+
gem "image_optim_pack", "=0.6.0"
|
|
17
|
+
gem "mini_magick"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ..
|
|
3
3
|
specs:
|
|
4
|
-
middleman-images (0.
|
|
4
|
+
middleman-images (0.2.0)
|
|
5
5
|
middleman-core (>= 4.1.14)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -142,24 +142,13 @@ GEM
|
|
|
142
142
|
rack (2.1.2)
|
|
143
143
|
rack-test (1.1.0)
|
|
144
144
|
rack (>= 1.0, < 3)
|
|
145
|
-
rake (13.0.1)
|
|
146
145
|
rb-fsevent (0.10.3)
|
|
147
146
|
rb-inotify (0.10.1)
|
|
148
147
|
ffi (~> 1.0)
|
|
149
|
-
rdoc (6.2.1)
|
|
150
148
|
regexp_parser (1.6.0)
|
|
151
|
-
rspec (3.9.0)
|
|
152
|
-
rspec-core (~> 3.9.0)
|
|
153
|
-
rspec-expectations (~> 3.9.0)
|
|
154
|
-
rspec-mocks (~> 3.9.0)
|
|
155
|
-
rspec-core (3.9.1)
|
|
156
|
-
rspec-support (~> 3.9.1)
|
|
157
149
|
rspec-expectations (3.9.0)
|
|
158
150
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
159
151
|
rspec-support (~> 3.9.0)
|
|
160
|
-
rspec-mocks (3.9.1)
|
|
161
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
162
|
-
rspec-support (~> 3.9.0)
|
|
163
152
|
rspec-support (3.9.2)
|
|
164
153
|
sass (3.4.25)
|
|
165
154
|
servolux (0.13.0)
|
|
@@ -173,7 +162,6 @@ GEM
|
|
|
173
162
|
execjs (>= 0.3.0, < 3)
|
|
174
163
|
xpath (3.2.0)
|
|
175
164
|
nokogiri (~> 1.8)
|
|
176
|
-
yard (0.9.24)
|
|
177
165
|
|
|
178
166
|
PLATFORMS
|
|
179
167
|
ruby
|
|
@@ -187,10 +175,6 @@ DEPENDENCIES
|
|
|
187
175
|
middleman (~> 4.1.0)
|
|
188
176
|
middleman-images!
|
|
189
177
|
mini_magick
|
|
190
|
-
rake
|
|
191
|
-
rdoc
|
|
192
|
-
rspec
|
|
193
|
-
yard
|
|
194
178
|
|
|
195
179
|
BUNDLED WITH
|
|
196
180
|
1.17.3
|
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
# If you do not have OpenSSL installed, update
|
|
2
2
|
# the following line to use "http://" instead
|
|
3
|
-
source
|
|
3
|
+
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
# Specify your gem's dependencies in middleman-images.gemspec
|
|
6
|
-
gemspec path:
|
|
6
|
+
gemspec path: ".."
|
|
7
7
|
|
|
8
|
+
gem "middleman", "~> 4.2.0"
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
gem 'rdoc'
|
|
13
|
-
gem 'yard'
|
|
14
|
-
end
|
|
10
|
+
gem "aruba"
|
|
11
|
+
gem "capybara"
|
|
12
|
+
gem "cucumber"
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
gem 'rspec'
|
|
21
|
-
|
|
22
|
-
gem 'image_optim'
|
|
23
|
-
gem 'mini_magick'
|
|
24
|
-
|
|
25
|
-
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
26
|
-
gem 'image_optim_pack', '=0.6.0'
|
|
27
|
-
end
|
|
14
|
+
gem "image_optim"
|
|
15
|
+
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
16
|
+
gem "image_optim_pack", "=0.6.0"
|
|
17
|
+
gem "mini_magick"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ..
|
|
3
3
|
specs:
|
|
4
|
-
middleman-images (0.
|
|
4
|
+
middleman-images (0.2.0)
|
|
5
5
|
middleman-core (>= 4.1.14)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -142,24 +142,13 @@ GEM
|
|
|
142
142
|
rack (2.1.2)
|
|
143
143
|
rack-test (1.1.0)
|
|
144
144
|
rack (>= 1.0, < 3)
|
|
145
|
-
rake (13.0.1)
|
|
146
145
|
rb-fsevent (0.10.3)
|
|
147
146
|
rb-inotify (0.10.1)
|
|
148
147
|
ffi (~> 1.0)
|
|
149
|
-
rdoc (6.2.1)
|
|
150
148
|
regexp_parser (1.6.0)
|
|
151
|
-
rspec (3.9.0)
|
|
152
|
-
rspec-core (~> 3.9.0)
|
|
153
|
-
rspec-expectations (~> 3.9.0)
|
|
154
|
-
rspec-mocks (~> 3.9.0)
|
|
155
|
-
rspec-core (3.9.1)
|
|
156
|
-
rspec-support (~> 3.9.1)
|
|
157
149
|
rspec-expectations (3.9.0)
|
|
158
150
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
159
151
|
rspec-support (~> 3.9.0)
|
|
160
|
-
rspec-mocks (3.9.1)
|
|
161
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
162
|
-
rspec-support (~> 3.9.0)
|
|
163
152
|
rspec-support (3.9.2)
|
|
164
153
|
sass (3.4.25)
|
|
165
154
|
servolux (0.13.0)
|
|
@@ -173,7 +162,6 @@ GEM
|
|
|
173
162
|
execjs (>= 0.3.0, < 3)
|
|
174
163
|
xpath (3.2.0)
|
|
175
164
|
nokogiri (~> 1.8)
|
|
176
|
-
yard (0.9.24)
|
|
177
165
|
|
|
178
166
|
PLATFORMS
|
|
179
167
|
ruby
|
|
@@ -187,10 +175,6 @@ DEPENDENCIES
|
|
|
187
175
|
middleman (~> 4.2.0)
|
|
188
176
|
middleman-images!
|
|
189
177
|
mini_magick
|
|
190
|
-
rake
|
|
191
|
-
rdoc
|
|
192
|
-
rspec
|
|
193
|
-
yard
|
|
194
178
|
|
|
195
179
|
BUNDLED WITH
|
|
196
180
|
1.17.3
|
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
# If you do not have OpenSSL installed, update
|
|
2
2
|
# the following line to use "http://" instead
|
|
3
|
-
source
|
|
3
|
+
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
# Specify your gem's dependencies in middleman-images.gemspec
|
|
6
|
-
gemspec path:
|
|
6
|
+
gemspec path: ".."
|
|
7
7
|
|
|
8
|
+
gem "middleman", "~> 4.3.0"
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
gem 'rdoc'
|
|
13
|
-
gem 'yard'
|
|
14
|
-
end
|
|
10
|
+
gem "aruba"
|
|
11
|
+
gem "capybara"
|
|
12
|
+
gem "cucumber"
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
gem 'rspec'
|
|
21
|
-
|
|
22
|
-
gem 'image_optim'
|
|
23
|
-
gem 'mini_magick'
|
|
24
|
-
|
|
25
|
-
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
26
|
-
gem 'image_optim_pack', '=0.6.0'
|
|
27
|
-
end
|
|
14
|
+
gem "image_optim"
|
|
15
|
+
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
16
|
+
gem "image_optim_pack", "=0.6.0"
|
|
17
|
+
gem "mini_magick"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ..
|
|
3
3
|
specs:
|
|
4
|
-
middleman-images (0.
|
|
4
|
+
middleman-images (0.2.0)
|
|
5
5
|
middleman-core (>= 4.1.14)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -139,24 +139,13 @@ GEM
|
|
|
139
139
|
rack (2.1.2)
|
|
140
140
|
rack-test (1.1.0)
|
|
141
141
|
rack (>= 1.0, < 3)
|
|
142
|
-
rake (13.0.1)
|
|
143
142
|
rb-fsevent (0.10.3)
|
|
144
143
|
rb-inotify (0.10.1)
|
|
145
144
|
ffi (~> 1.0)
|
|
146
|
-
rdoc (6.2.1)
|
|
147
145
|
regexp_parser (1.6.0)
|
|
148
|
-
rspec (3.9.0)
|
|
149
|
-
rspec-core (~> 3.9.0)
|
|
150
|
-
rspec-expectations (~> 3.9.0)
|
|
151
|
-
rspec-mocks (~> 3.9.0)
|
|
152
|
-
rspec-core (3.9.1)
|
|
153
|
-
rspec-support (~> 3.9.1)
|
|
154
146
|
rspec-expectations (3.9.0)
|
|
155
147
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
156
148
|
rspec-support (~> 3.9.0)
|
|
157
|
-
rspec-mocks (3.9.1)
|
|
158
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
159
|
-
rspec-support (~> 3.9.0)
|
|
160
149
|
rspec-support (3.9.2)
|
|
161
150
|
sassc (2.2.1)
|
|
162
151
|
ffi (~> 1.9)
|
|
@@ -171,7 +160,6 @@ GEM
|
|
|
171
160
|
execjs (>= 0.3.0, < 3)
|
|
172
161
|
xpath (3.2.0)
|
|
173
162
|
nokogiri (~> 1.8)
|
|
174
|
-
yard (0.9.24)
|
|
175
163
|
|
|
176
164
|
PLATFORMS
|
|
177
165
|
ruby
|
|
@@ -185,10 +173,6 @@ DEPENDENCIES
|
|
|
185
173
|
middleman (~> 4.3.0)
|
|
186
174
|
middleman-images!
|
|
187
175
|
mini_magick
|
|
188
|
-
rake
|
|
189
|
-
rdoc
|
|
190
|
-
rspec
|
|
191
|
-
yard
|
|
192
176
|
|
|
193
177
|
BUNDLED WITH
|
|
194
178
|
2.1.4
|
|
@@ -1,27 +1,17 @@
|
|
|
1
1
|
# If you do not have OpenSSL installed, update
|
|
2
2
|
# the following line to use "http://" instead
|
|
3
|
-
source
|
|
3
|
+
source "https://rubygems.org"
|
|
4
4
|
|
|
5
5
|
# Specify your gem's dependencies in middleman-images.gemspec
|
|
6
|
-
gemspec path:
|
|
6
|
+
gemspec path: ".."
|
|
7
7
|
|
|
8
|
+
gem "middleman", "~> 5.0.0.rc"
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
gem 'rdoc'
|
|
13
|
-
gem 'yard'
|
|
14
|
-
end
|
|
10
|
+
gem "aruba"
|
|
11
|
+
gem "capybara"
|
|
12
|
+
gem "cucumber"
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
gem 'rspec'
|
|
21
|
-
|
|
22
|
-
gem 'image_optim'
|
|
23
|
-
gem 'mini_magick'
|
|
24
|
-
|
|
25
|
-
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
26
|
-
gem 'image_optim_pack', '=0.6.0'
|
|
27
|
-
end
|
|
14
|
+
gem "image_optim"
|
|
15
|
+
# Version is locked to make sure asset_hash tests are not broken by updated optimizations.
|
|
16
|
+
gem "image_optim_pack", "=0.6.0"
|
|
17
|
+
gem "mini_magick"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ..
|
|
3
3
|
specs:
|
|
4
|
-
middleman-images (0.
|
|
4
|
+
middleman-images (0.2.0)
|
|
5
5
|
middleman-core (>= 4.1.14)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -21,7 +21,7 @@ GEM
|
|
|
21
21
|
ffi (~> 1.9)
|
|
22
22
|
rspec-expectations (>= 2.99)
|
|
23
23
|
thor (>= 0.19, < 2.0)
|
|
24
|
-
backports (3.
|
|
24
|
+
backports (3.16.1)
|
|
25
25
|
builder (3.2.4)
|
|
26
26
|
capybara (3.31.0)
|
|
27
27
|
addressable
|
|
@@ -140,27 +140,16 @@ GEM
|
|
|
140
140
|
rack (2.1.2)
|
|
141
141
|
rack-test (1.1.0)
|
|
142
142
|
rack (>= 1.0, < 3)
|
|
143
|
-
rake (13.0.1)
|
|
144
143
|
rb-fsevent (0.10.3)
|
|
145
144
|
rb-inotify (0.10.1)
|
|
146
145
|
ffi (~> 1.0)
|
|
147
|
-
rdoc (6.2.1)
|
|
148
146
|
regexp_parser (1.6.0)
|
|
149
147
|
rgl (0.5.6)
|
|
150
148
|
lazy_priority_queue (~> 0.1.0)
|
|
151
149
|
stream (~> 0.5.2)
|
|
152
|
-
rspec (3.9.0)
|
|
153
|
-
rspec-core (~> 3.9.0)
|
|
154
|
-
rspec-expectations (~> 3.9.0)
|
|
155
|
-
rspec-mocks (~> 3.9.0)
|
|
156
|
-
rspec-core (3.9.1)
|
|
157
|
-
rspec-support (~> 3.9.1)
|
|
158
150
|
rspec-expectations (3.9.0)
|
|
159
151
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
160
152
|
rspec-support (~> 3.9.0)
|
|
161
|
-
rspec-mocks (3.9.1)
|
|
162
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
163
|
-
rspec-support (~> 3.9.0)
|
|
164
153
|
rspec-support (3.9.2)
|
|
165
154
|
sassc (2.2.1)
|
|
166
155
|
ffi (~> 1.9)
|
|
@@ -176,7 +165,6 @@ GEM
|
|
|
176
165
|
execjs (>= 0.3.0, < 3)
|
|
177
166
|
xpath (3.2.0)
|
|
178
167
|
nokogiri (~> 1.8)
|
|
179
|
-
yard (0.9.24)
|
|
180
168
|
|
|
181
169
|
PLATFORMS
|
|
182
170
|
ruby
|
|
@@ -190,10 +178,6 @@ DEPENDENCIES
|
|
|
190
178
|
middleman (~> 5.0.0.rc)
|
|
191
179
|
middleman-images!
|
|
192
180
|
mini_magick
|
|
193
|
-
rake
|
|
194
|
-
rdoc
|
|
195
|
-
rspec
|
|
196
|
-
yard
|
|
197
181
|
|
|
198
182
|
BUNDLED WITH
|
|
199
183
|
2.1.4
|
|
@@ -1,56 +1,48 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
1
|
+
require "middleman-core"
|
|
2
|
+
require "pathname"
|
|
3
|
+
require "padrino-helpers"
|
|
4
4
|
|
|
5
5
|
module Middleman
|
|
6
6
|
module Images
|
|
7
7
|
class Extension < ::Middleman::Extension
|
|
8
|
-
option :optimize, false,
|
|
9
|
-
option :image_optim, {},
|
|
10
|
-
option :ignore_original, false,
|
|
11
|
-
option :cache_dir,
|
|
8
|
+
option :optimize, false, "Whether to optimize images by default"
|
|
9
|
+
option :image_optim, {}, "Default options for image_optim"
|
|
10
|
+
option :ignore_original, false, "Whether to ignore original images in build"
|
|
11
|
+
option :cache_dir, "cache", "Specification of cache folder"
|
|
12
12
|
|
|
13
13
|
helpers do
|
|
14
|
-
def image_tag(
|
|
14
|
+
def image_tag(path, options = {})
|
|
15
15
|
process_options = options.slice(:resize, :optimize)
|
|
16
|
-
options = { src: image_path(
|
|
17
|
-
super
|
|
16
|
+
options = { src: image_path(path, process_options) }.update(options.except(:resize, :optimize))
|
|
17
|
+
super(path, options)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def image_path(
|
|
21
|
-
|
|
22
|
-
super
|
|
20
|
+
def image_path(path, process_options = {})
|
|
21
|
+
path = extensions[:images].image_path(path, process_options)
|
|
22
|
+
super(path)
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def
|
|
27
|
-
@
|
|
26
|
+
def manipulate_resource_list(resources)
|
|
27
|
+
@manipulator.manipulate_resource_list(resources)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
def
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
image = Image.new(app, source.source_file, dest_url, process_options.merge(cache_dir: options[:cache_dir]))
|
|
34
|
-
manipulator.add image
|
|
35
|
-
app.sitemap.register_resource_list_manipulator(:images, manipulator, 40) unless app.build?
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def image(url, process_options)
|
|
41
|
-
source = app.sitemap.find_resource_by_path(absolute_image_path(url))
|
|
42
|
-
return url if source.nil?
|
|
30
|
+
def image_path(path, process_options)
|
|
31
|
+
source = app.sitemap.find_resource_by_path(absolute_path(path))
|
|
32
|
+
return path if source.nil?
|
|
43
33
|
|
|
44
34
|
process_options[:image_optim] = options[:image_optim]
|
|
45
35
|
process_options[:optimize] = options[:optimize] unless process_options.key?(:optimize)
|
|
46
36
|
|
|
47
37
|
if process_options[:resize] || process_options[:optimize]
|
|
48
|
-
|
|
38
|
+
processed_path = Pathname.new(add_processed_resource(source, process_options))
|
|
39
|
+
images_dir = Pathname.new(app.config[:images_dir])
|
|
40
|
+
path = processed_path.relative_path_from(Pathname.new(app.config[:images_dir])).to_s
|
|
49
41
|
else
|
|
50
|
-
manipulator.preserve_original source
|
|
51
|
-
app.sitemap.register_resource_list_manipulator(:images, manipulator, 40) unless app.build?
|
|
42
|
+
@manipulator.preserve_original source
|
|
52
43
|
end
|
|
53
|
-
|
|
44
|
+
|
|
45
|
+
path
|
|
54
46
|
end
|
|
55
47
|
|
|
56
48
|
def initialize(app, options_hash = {}, &block)
|
|
@@ -58,31 +50,25 @@ module Middleman
|
|
|
58
50
|
@manipulator = Manipulator.new(@app, options[:ignore_original])
|
|
59
51
|
end
|
|
60
52
|
|
|
61
|
-
def before_build(builder)
|
|
62
|
-
# trigger our image_tag helper
|
|
63
|
-
rack = builder.instance_variable_get(:@rack)
|
|
64
|
-
|
|
65
|
-
builder.app.logger.info "== Images: Looking for images to process"
|
|
66
|
-
builder.app.sitemap.resources.each do |resource|
|
|
67
|
-
rack.get(CGI.escape(resource.request_path)) unless resource.binary?
|
|
68
|
-
end
|
|
69
|
-
builder.app.sitemap.register_resource_list_manipulator(:images, manipulator, 40)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
53
|
private
|
|
73
54
|
|
|
74
|
-
|
|
55
|
+
def absolute_path(path)
|
|
56
|
+
absolute_path = path.start_with?("/") || path.start_with?(app.config[:images_dir])
|
|
57
|
+
absolute_path ? path : app.config[:images_dir] + "/" + path
|
|
58
|
+
end
|
|
75
59
|
|
|
76
|
-
def
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
60
|
+
def add_processed_resource(source, process_options)
|
|
61
|
+
build_processed_path(source, process_options).tap do |processed_path|
|
|
62
|
+
processed_resource = Image.new(app.sitemap, processed_path, source.source_file, process_options.merge(cache_dir: options[:cache_dir]))
|
|
63
|
+
@manipulator.add(processed_resource)
|
|
64
|
+
end
|
|
81
65
|
end
|
|
82
66
|
|
|
83
|
-
def
|
|
84
|
-
|
|
85
|
-
|
|
67
|
+
def build_processed_path(source, process_options)
|
|
68
|
+
destination = source.normalized_path.sub(/#{source.ext}$/, "")
|
|
69
|
+
destination += "-" + CGI.escape(process_options[:resize].to_s) if process_options[:resize]
|
|
70
|
+
destination += "-opt" if process_options[:optimize]
|
|
71
|
+
destination + source.ext
|
|
86
72
|
end
|
|
87
73
|
end
|
|
88
74
|
end
|
|
@@ -1,40 +1,56 @@
|
|
|
1
1
|
module Middleman
|
|
2
2
|
module Images
|
|
3
|
-
class Image
|
|
4
|
-
attr_reader :destination, :source
|
|
5
|
-
|
|
3
|
+
class Image < Middleman::Sitemap::Resource
|
|
6
4
|
IGNORE_RESIZING = {
|
|
7
|
-
".svg" =>
|
|
8
|
-
".gif" =>
|
|
5
|
+
".svg" => "WARNING: We did not resize %{file}. Resizing SVG files will lead to ImageMagick creating an SVG with an embedded binary image thus making the file way bigger.",
|
|
6
|
+
".gif" => "WARNING: We did not resize %{file}. Resizing GIF files will remove the animation. If your GIF file is not animated, use JPG or PNG instead.",
|
|
9
7
|
}.freeze
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
@
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
FileUtils.mkdir_p File.dirname(
|
|
9
|
+
attr_reader :app, :original_source_file
|
|
10
|
+
|
|
11
|
+
def initialize(store, path, source, options = {})
|
|
12
|
+
@original_source_file = source
|
|
13
|
+
|
|
14
|
+
processed_source_file = File.join(store.app.root, options.delete(:cache_dir), path)
|
|
15
|
+
FileUtils.mkdir_p File.dirname(processed_source_file)
|
|
16
|
+
|
|
17
|
+
@processing_options = options
|
|
18
|
+
|
|
19
|
+
super(store, path, processed_source_file)
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
def process
|
|
21
|
-
return if File.exist?(
|
|
23
|
+
return if File.exist?(processed_source_file) && File.mtime(original_source_file) < File.mtime(processed_source_file)
|
|
24
|
+
|
|
25
|
+
app.logger.info "== Images: Processing #{@path}"
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
optimize(cache, options[:image_optim]) if options[:optimize]
|
|
27
|
+
FileUtils.copy(original_source_file, processed_source_file)
|
|
28
|
+
resize(processed_source_file, @processing_options[:resize]) unless @processing_options[:resize].nil?
|
|
29
|
+
optimize(processed_source_file, @processing_options[:image_optim]) if @processing_options[:optimize]
|
|
27
30
|
end
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
# We want to process images as late as possible. Before Middleman works with our source file, it will check
|
|
33
|
+
# whether it is binary? or static_file?. That's when we need to ensure the processed source files exist.
|
|
34
|
+
def binary?
|
|
35
|
+
process
|
|
36
|
+
super
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def static_file?
|
|
40
|
+
process
|
|
41
|
+
super
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# The processed source file is the new source file for middleman.
|
|
45
|
+
def processed_source_file
|
|
46
|
+
source_file
|
|
31
47
|
end
|
|
32
48
|
|
|
33
49
|
private
|
|
34
50
|
|
|
35
51
|
def resize(image_path, options)
|
|
36
52
|
begin
|
|
37
|
-
require
|
|
53
|
+
require "mini_magick"
|
|
38
54
|
rescue LoadError
|
|
39
55
|
raise 'The gem "mini_magick" is required for image resizing. Please install "mini_magick" or remove the resize option.'
|
|
40
56
|
end
|
|
@@ -47,22 +63,20 @@ module Middleman
|
|
|
47
63
|
|
|
48
64
|
image = MiniMagick::Image.new(image_path) do |i|
|
|
49
65
|
i.resize(options)
|
|
50
|
-
i.define(
|
|
66
|
+
i.define("jpeg:preserve-settings")
|
|
51
67
|
end
|
|
52
68
|
image.write image_path
|
|
53
69
|
end
|
|
54
70
|
|
|
55
71
|
def optimize(image_path, options)
|
|
56
72
|
begin
|
|
57
|
-
require
|
|
73
|
+
require "image_optim"
|
|
58
74
|
rescue LoadError
|
|
59
75
|
raise "The gem 'image_option' is required for image optimization. Please install the gem 'image_optim' or set the option optimize: false."
|
|
60
76
|
end
|
|
61
77
|
|
|
62
78
|
ImageOptim.new(options).optimize_image!(image_path)
|
|
63
79
|
end
|
|
64
|
-
|
|
65
|
-
attr_accessor :app, :cache, :options
|
|
66
80
|
end
|
|
67
81
|
end
|
|
68
82
|
end
|
|
@@ -6,12 +6,13 @@ module Middleman
|
|
|
6
6
|
@images = []
|
|
7
7
|
@required_originals = []
|
|
8
8
|
@ignore_original = ignore_original
|
|
9
|
+
@inspected_at = {}
|
|
10
|
+
@destination_paths = []
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def add(image)
|
|
12
|
-
unless
|
|
13
|
-
|
|
14
|
-
end
|
|
14
|
+
images << image unless @destination_paths.include?(image.destination_path)
|
|
15
|
+
@destination_paths << image.destination_path
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
def preserve_original(resource)
|
|
@@ -19,28 +20,54 @@ module Middleman
|
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
def manipulate_resource_list(resources)
|
|
23
|
+
app.logger.info "== Images: Registering images to process. This may take a while…"
|
|
24
|
+
|
|
25
|
+
resources.each do |resource|
|
|
26
|
+
next unless inspect?(resource)
|
|
27
|
+
|
|
28
|
+
app.logger.debug "== Images: Inspecting #{resource.destination_path} for images to process."
|
|
29
|
+
|
|
30
|
+
begin
|
|
31
|
+
# We inspect templates by triggering the render method on them. This way our
|
|
32
|
+
# image_tag and image_path helpers will get called and register the images.
|
|
33
|
+
resource.render({}, {})
|
|
34
|
+
rescue => e
|
|
35
|
+
app.logger.debug e
|
|
36
|
+
app.logger.debug "== Images: There was an error inspecting #{resource.destination_path}. Images for this resource will not be processed."
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
app.logger.info "== Images: All images have been registered."
|
|
41
|
+
|
|
22
42
|
ignore_orginal_resources(resources) if ignore_original
|
|
23
|
-
resources +
|
|
43
|
+
resources + images
|
|
24
44
|
end
|
|
25
45
|
|
|
26
46
|
private
|
|
27
47
|
|
|
28
48
|
attr_accessor :app, :images, :ignore_original, :required_originals
|
|
29
49
|
|
|
30
|
-
def
|
|
31
|
-
|
|
32
|
-
|
|
50
|
+
def inspect?(resource)
|
|
51
|
+
return false unless resource.template?
|
|
52
|
+
|
|
53
|
+
inspected_at = @inspected_at[resource.destination_path]
|
|
54
|
+
return true if inspected_at.nil?
|
|
55
|
+
|
|
56
|
+
source_modification_time = File.mtime(resource.source_file)
|
|
57
|
+
inspected_at < source_modification_time.tap do |inspect|
|
|
58
|
+
@inspected_at[resource.destination_path] = source_modification_time if inspect
|
|
59
|
+
end
|
|
33
60
|
end
|
|
34
61
|
|
|
35
62
|
def ignore_orginal_resources(resources)
|
|
36
|
-
originals = images.map(&:
|
|
63
|
+
originals = images.map(&:original_source_file)
|
|
37
64
|
unused_originals = originals - required_originals
|
|
38
65
|
|
|
39
66
|
resources.each do |resource|
|
|
40
67
|
if unused_originals.include? resource.source_file
|
|
41
68
|
resource.ignore!
|
|
42
69
|
elsif required_originals.include? resource.source_file
|
|
43
|
-
resource.ignored
|
|
70
|
+
resource.instance_variable_set(:@ignored, false)
|
|
44
71
|
end
|
|
45
72
|
end
|
|
46
73
|
end
|
data/middleman-images.gemspec
CHANGED
|
@@ -3,21 +3,25 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
|
3
3
|
require "middleman-images/version"
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |s|
|
|
6
|
-
s.name
|
|
7
|
-
s.version
|
|
8
|
-
s.platform
|
|
9
|
-
s.licenses
|
|
10
|
-
s.authors
|
|
11
|
-
s.email
|
|
12
|
-
s.homepage
|
|
13
|
-
s.summary
|
|
14
|
-
s.description = "
|
|
6
|
+
s.name = "middleman-images"
|
|
7
|
+
s.version = MiddlemanImages::VERSION.dup
|
|
8
|
+
s.platform = Gem::Platform::RUBY
|
|
9
|
+
s.licenses = ["MIT"]
|
|
10
|
+
s.authors = ["Ruben Grimm", "Julian Schneider"]
|
|
11
|
+
s.email = ["ruben.grimm@zweitag.de", "julian.schneider@zweitag.de"]
|
|
12
|
+
s.homepage = "https://www.github.com/zweitag/middleman-images"
|
|
13
|
+
s.summary = "Resize and optimize images for Middleman"
|
|
14
|
+
s.description = "" "
|
|
15
|
+
Resize and optimize your images on the fly with Middleman. Just run middleman build
|
|
16
|
+
and all your images will get the minimizing treatment. Middleman Images currently
|
|
17
|
+
depends on mini_magick for resizing and image_optim for optimizing your images.
|
|
18
|
+
" ""
|
|
15
19
|
|
|
16
|
-
s.files
|
|
17
|
-
s.test_files
|
|
18
|
-
s.executables
|
|
20
|
+
s.files = `git ls-files`.split("\n")
|
|
21
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
22
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
|
19
23
|
s.require_paths = ["lib"]
|
|
20
|
-
s.required_ruby_version =
|
|
24
|
+
s.required_ruby_version = ">= 2.5.0"
|
|
21
25
|
|
|
22
|
-
s.add_runtime_dependency("middleman-core", [">= 4.1.14"])
|
|
26
|
+
s.add_runtime_dependency("middleman-core", [">= 4.1.14", "< 5.1"])
|
|
23
27
|
end
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: middleman-images
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ruben Grimm
|
|
8
8
|
- Julian Schneider
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2020-
|
|
12
|
+
date: 2020-09-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: middleman-core
|
|
@@ -18,6 +18,9 @@ dependencies:
|
|
|
18
18
|
- - ">="
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
20
|
version: 4.1.14
|
|
21
|
+
- - "<"
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: '5.1'
|
|
21
24
|
type: :runtime
|
|
22
25
|
prerelease: false
|
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -25,7 +28,13 @@ dependencies:
|
|
|
25
28
|
- - ">="
|
|
26
29
|
- !ruby/object:Gem::Version
|
|
27
30
|
version: 4.1.14
|
|
28
|
-
|
|
31
|
+
- - "<"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '5.1'
|
|
34
|
+
description: "\n Resize and optimize your images on the fly with Middleman. Just
|
|
35
|
+
run middleman build\n and all your images will get the minimizing treatment.
|
|
36
|
+
Middleman Images currently\n depends on mini_magick for resizing and image_optim
|
|
37
|
+
for optimizing your images.\n "
|
|
29
38
|
email:
|
|
30
39
|
- ruben.grimm@zweitag.de
|
|
31
40
|
- julian.schneider@zweitag.de
|
|
@@ -34,21 +43,24 @@ extensions: []
|
|
|
34
43
|
extra_rdoc_files: []
|
|
35
44
|
files:
|
|
36
45
|
- ".gitignore"
|
|
46
|
+
- ".rufo"
|
|
37
47
|
- ".travis.yml"
|
|
38
48
|
- CHANGELOG.md
|
|
39
49
|
- Gemfile
|
|
40
50
|
- Gemfile.lock
|
|
41
51
|
- LICENSE
|
|
42
52
|
- README.md
|
|
43
|
-
- Rakefile
|
|
44
53
|
- features/building.feature
|
|
45
54
|
- features/ignore_original.feature
|
|
46
55
|
- features/image_path.feature
|
|
56
|
+
- features/images_dir.feature
|
|
47
57
|
- features/optimization.feature
|
|
58
|
+
- features/proxy_resources.feature
|
|
48
59
|
- features/relative_path.feature
|
|
49
60
|
- features/resize.feature
|
|
50
61
|
- features/support/env.rb
|
|
51
62
|
- features/support/middleman_images_steps.rb
|
|
63
|
+
- fixtures/image/source/assets/images/fox.jpg
|
|
52
64
|
- fixtures/image/source/images/fox.jpg
|
|
53
65
|
- gemfiles/Gemfile.middleman-4.1
|
|
54
66
|
- gemfiles/Gemfile.middleman-4.1.lock
|
|
@@ -68,7 +80,7 @@ homepage: https://www.github.com/zweitag/middleman-images
|
|
|
68
80
|
licenses:
|
|
69
81
|
- MIT
|
|
70
82
|
metadata: {}
|
|
71
|
-
post_install_message:
|
|
83
|
+
post_install_message:
|
|
72
84
|
rdoc_options: []
|
|
73
85
|
require_paths:
|
|
74
86
|
- lib
|
|
@@ -83,15 +95,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
83
95
|
- !ruby/object:Gem::Version
|
|
84
96
|
version: '0'
|
|
85
97
|
requirements: []
|
|
86
|
-
rubygems_version: 3.
|
|
87
|
-
signing_key:
|
|
98
|
+
rubygems_version: 3.1.2
|
|
99
|
+
signing_key:
|
|
88
100
|
specification_version: 4
|
|
89
101
|
summary: Resize and optimize images for Middleman
|
|
90
102
|
test_files:
|
|
91
103
|
- features/building.feature
|
|
92
104
|
- features/ignore_original.feature
|
|
93
105
|
- features/image_path.feature
|
|
106
|
+
- features/images_dir.feature
|
|
94
107
|
- features/optimization.feature
|
|
108
|
+
- features/proxy_resources.feature
|
|
95
109
|
- features/relative_path.feature
|
|
96
110
|
- features/resize.feature
|
|
97
111
|
- features/support/env.rb
|
data/Rakefile
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
require 'bundler'
|
|
2
|
-
Bundler::GemHelper.install_tasks
|
|
3
|
-
|
|
4
|
-
require 'cucumber/rake/task'
|
|
5
|
-
|
|
6
|
-
Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
|
|
7
|
-
t.cucumber_opts = '--color --tags ~@wip --strict'
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
Cucumber::Rake::Task.new(:cucumber_wip, 'Run work-in-progress features that should pass') do |t|
|
|
11
|
-
t.cucumber_opts = "--color --tags @wip --strict"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
require 'rake/clean'
|
|
15
|
-
|
|
16
|
-
task test: ['cucumber']
|
|
17
|
-
|
|
18
|
-
task default: :test
|