jekyll-assets 0.11.0 → 0.12.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/README.md +37 -0
- data/jekyll-assets.gemspec +4 -3
- data/lib/jekyll/assets_plugin/configuration.rb +12 -11
- data/lib/jekyll/assets_plugin/renderer.rb +36 -5
- data/lib/jekyll/assets_plugin/version.rb +1 -1
- data/spec/lib/jekyll/assets_plugin/configuration_spec.rb +7 -2
- data/spec/lib/jekyll/assets_plugin/renderer_spec.rb +39 -0
- metadata +31 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd81b41822b8b54ab4cc4d1a78ae99bff7a322b3
|
4
|
+
data.tar.gz: edeadf3fc3490d45c86f8d1147cc632ad5f40367
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a1f4e0ad128cffc1733260886fbe06439b65e38eda2ef66fef350f25262387c39d546b5de4b8a15e6ea0a812050e82ec2bc1814fd0fb6b1be031440aee1332c
|
7
|
+
data.tar.gz: 02ee95d9b922f750887a49095e6e56ea1c129f9dc29bc7493ca659a5dd95b33089ec3a0f84e1b8e1dae6ab7e44a6a4e26be5a5e3ad1aa5e9868bfebe309d048d
|
data/README.md
CHANGED
@@ -237,6 +237,37 @@ assets:
|
|
237
237
|
[amazon-s3]: http://aws.amazon.com/s3
|
238
238
|
|
239
239
|
|
240
|
+
### Images size (dimension) auto-guessing
|
241
|
+
|
242
|
+
The image helper accepts options param (in square brackets) with `autosize`
|
243
|
+
switch. If given, then image dimension will be calculated and
|
244
|
+
apropriate attributes set:
|
245
|
+
|
246
|
+
``` html
|
247
|
+
{% image logo.png alt="Logo" [autosize] %}
|
248
|
+
|
249
|
+
<!-- assuming logo.png is 50x50, the above will render -->
|
250
|
+
|
251
|
+
<img src="/assets/logo-68b329da9893e34099c7d8ad5cb9c940.png" alt="Logo"
|
252
|
+
width="50" height="50">
|
253
|
+
```
|
254
|
+
|
255
|
+
You can also globally enable `autosize` in config (see `autosize` config option
|
256
|
+
below). In this case, `image` tag will alway render dimension attributes unless
|
257
|
+
you specify `no-autosize` switch. Assume you have `autosize` option enabled in
|
258
|
+
config, then:
|
259
|
+
|
260
|
+
``` html
|
261
|
+
{% image logo.png [no-autosize] %}
|
262
|
+
{% image logo.png %}
|
263
|
+
|
264
|
+
<!-- assuming logo.png is 50x50, the above will render -->
|
265
|
+
|
266
|
+
<img src="/assets/logo-68b329da9893e34099c7d8ad5cb9c940.png">
|
267
|
+
<img src="/assets/logo-68b329da9893e34099c7d8ad5cb9c940.png"
|
268
|
+
width="50" height="50">
|
269
|
+
```
|
270
|
+
|
240
271
|
### Custom Compressors
|
241
272
|
|
242
273
|
Sprockets comes with good set of preconfigured compressors, but imagine you are
|
@@ -550,6 +581,12 @@ assets:
|
|
550
581
|
#
|
551
582
|
css_compressor: ~
|
552
583
|
#
|
584
|
+
# Globally enables adding image width and height attributes to image tags.
|
585
|
+
# Does nothing if either width or height attribute already set.
|
586
|
+
# Disabled by default.
|
587
|
+
#
|
588
|
+
autosize: false
|
589
|
+
#
|
553
590
|
# Sets cachebusting policy for generated assets.
|
554
591
|
#
|
555
592
|
# Possible variants:
|
data/jekyll-assets.gemspec
CHANGED
@@ -22,11 +22,12 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
spec.add_dependency "jekyll",
|
26
|
-
spec.add_dependency "
|
25
|
+
spec.add_dependency "jekyll", "~> 2.0"
|
26
|
+
spec.add_dependency "sass", "~> 3.2"
|
27
|
+
spec.add_dependency "fastimage", "~> 1.6"
|
28
|
+
spec.add_dependency "sprockets", "~> 2.10"
|
27
29
|
spec.add_dependency "sprockets-sass"
|
28
30
|
spec.add_dependency "sprockets-helpers"
|
29
|
-
spec.add_dependency "sass", "~> 3.2"
|
30
31
|
|
31
32
|
spec.add_development_dependency "bundler", "~> 1.6"
|
32
33
|
end
|
@@ -5,17 +5,18 @@ module Jekyll
|
|
5
5
|
module AssetsPlugin
|
6
6
|
class Configuration
|
7
7
|
DEFAULTS = {
|
8
|
-
:dirname
|
9
|
-
:sources
|
10
|
-
|
11
|
-
|
12
|
-
:js_compressor
|
13
|
-
:css_compressor
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
8
|
+
:dirname => "assets",
|
9
|
+
:sources => %w(_assets/javascripts
|
10
|
+
_assets/stylesheets
|
11
|
+
_assets/images),
|
12
|
+
:js_compressor => nil,
|
13
|
+
:css_compressor => nil,
|
14
|
+
:autosize => false,
|
15
|
+
:cachebust => :hard,
|
16
|
+
:cache => false,
|
17
|
+
:gzip => %w(text/css application/javascript),
|
18
|
+
:debug => false,
|
19
|
+
:version => 1
|
19
20
|
}.freeze
|
20
21
|
|
21
22
|
def initialize(config = {})
|
@@ -1,24 +1,34 @@
|
|
1
|
+
# 3rd-party
|
2
|
+
require "fastimage"
|
3
|
+
|
1
4
|
module Jekyll
|
2
5
|
module AssetsPlugin
|
3
6
|
class Renderer
|
4
7
|
STYLESHEET = '<link rel="stylesheet" href="%{path}"%{attrs}>'
|
5
8
|
JAVASCRIPT = '<script src="%{path}"%{attrs}></script>'
|
6
9
|
IMAGE = '<img src="%{path}"%{attrs}>'
|
10
|
+
IMAGESIZE = 'width="%d" height="%d"'
|
7
11
|
|
8
12
|
URI_RE = %r{^(?:[^:]+:)?//(?:[^./]+\.)+[^./]+/}
|
9
|
-
PARAMS_RE = /
|
10
|
-
|
13
|
+
PARAMS_RE = / ^
|
14
|
+
\s*
|
15
|
+
(?: "(?<path>[^"]+)" | '(?<path>[^']+)' | (?<path>[^ ]+) )
|
16
|
+
(?<attrs>.*?)
|
17
|
+
(?: \[(?<options>.*)\] )?
|
18
|
+
\s*
|
19
|
+
$
|
11
20
|
/x
|
12
21
|
|
13
|
-
attr_reader :site, :path, :attrs
|
22
|
+
attr_reader :site, :path, :attrs, :options
|
14
23
|
|
15
24
|
def initialize(context, params)
|
16
25
|
@site = context.registers[:site]
|
17
26
|
|
18
27
|
match = params.strip.match PARAMS_RE
|
19
28
|
|
20
|
-
@path
|
21
|
-
@attrs
|
29
|
+
@path = match["path"]
|
30
|
+
@attrs = match["attrs"]
|
31
|
+
@options = match["options"].to_s.split(",")
|
22
32
|
end
|
23
33
|
|
24
34
|
def render_asset
|
@@ -40,6 +50,7 @@ module Jekyll
|
|
40
50
|
end
|
41
51
|
|
42
52
|
def render_image
|
53
|
+
autosize!
|
43
54
|
render_tag IMAGE
|
44
55
|
end
|
45
56
|
|
@@ -58,6 +69,26 @@ module Jekyll
|
|
58
69
|
tags.join "\n"
|
59
70
|
end
|
60
71
|
|
72
|
+
def autosize!
|
73
|
+
return unless autosize?
|
74
|
+
|
75
|
+
if remote?
|
76
|
+
width, height = FastImage.size(path)
|
77
|
+
else
|
78
|
+
width, height = FastImage.size(site.assets[path].pathname)
|
79
|
+
end
|
80
|
+
|
81
|
+
@attrs = %(#{@attrs} width="#{width}" height="#{height}").strip
|
82
|
+
end
|
83
|
+
|
84
|
+
def autosize?
|
85
|
+
if site.assets_config.autosize
|
86
|
+
!options.include? "no-autosize"
|
87
|
+
else
|
88
|
+
options.include? "autosize"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
61
92
|
def remote?
|
62
93
|
path =~ URI_RE
|
63
94
|
end
|
@@ -34,6 +34,11 @@ RSpec.describe Jekyll::AssetsPlugin::Configuration do
|
|
34
34
|
it { is_expected.to be_nil }
|
35
35
|
end
|
36
36
|
|
37
|
+
context "autosize" do
|
38
|
+
subject { config.autosize }
|
39
|
+
it { is_expected.to be false }
|
40
|
+
end
|
41
|
+
|
37
42
|
context "gzip" do
|
38
43
|
subject { config.gzip }
|
39
44
|
it { is_expected.to match_array %w(text/css application/javascript) }
|
@@ -41,7 +46,7 @@ RSpec.describe Jekyll::AssetsPlugin::Configuration do
|
|
41
46
|
|
42
47
|
context "cache_assets?" do
|
43
48
|
subject { config.cache_assets? }
|
44
|
-
it { is_expected.to
|
49
|
+
it { is_expected.to be false }
|
45
50
|
end
|
46
51
|
|
47
52
|
context "cache_path" do
|
@@ -51,7 +56,7 @@ RSpec.describe Jekyll::AssetsPlugin::Configuration do
|
|
51
56
|
|
52
57
|
context "debug" do
|
53
58
|
subject { config.debug }
|
54
|
-
it { is_expected.to
|
59
|
+
it { is_expected.to be false }
|
55
60
|
end
|
56
61
|
|
57
62
|
end
|
@@ -94,6 +94,20 @@ RSpec.describe Jekyll::AssetsPlugin::Renderer do
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
+
describe "#options" do
|
98
|
+
subject { renderer.options }
|
99
|
+
|
100
|
+
context "with no options given" do
|
101
|
+
it { is_expected.to be_an Array }
|
102
|
+
it { is_expected.to be_empty }
|
103
|
+
end
|
104
|
+
|
105
|
+
context "with options given" do
|
106
|
+
let(:params) { "app [foo,bar]" }
|
107
|
+
it { is_expected.to eq %w(foo bar) }
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
97
111
|
describe "#render_javascript" do
|
98
112
|
subject { renderer.render_javascript }
|
99
113
|
|
@@ -197,6 +211,31 @@ RSpec.describe Jekyll::AssetsPlugin::Renderer do
|
|
197
211
|
it { is_expected.to include "data-test=true" }
|
198
212
|
end
|
199
213
|
end
|
214
|
+
|
215
|
+
context "with [autosize] helper option" do
|
216
|
+
let(:params) { "noise.png [autosize]" }
|
217
|
+
it { is_expected.to include 'width="100" height="100"' }
|
218
|
+
end
|
219
|
+
|
220
|
+
context "with [no-autosize] helper option" do
|
221
|
+
let(:params) { "noise.png [no-autosize]" }
|
222
|
+
it { is_expected.to_not include 'width="100" height="100"' }
|
223
|
+
end
|
224
|
+
|
225
|
+
context "with autosize enabled in config" do
|
226
|
+
let(:assets_config) { Hash[:autosize, true] }
|
227
|
+
it { is_expected.to include 'width="100" height="100"' }
|
228
|
+
|
229
|
+
context "and [autosize] helper option given" do
|
230
|
+
let(:params) { "noise.png [autosize]" }
|
231
|
+
it { is_expected.to include 'width="100" height="100"' }
|
232
|
+
end
|
233
|
+
|
234
|
+
context "and [no-autosize] helper option given" do
|
235
|
+
let(:params) { "noise.png [no-autosize]" }
|
236
|
+
it { is_expected.to_not include 'width="100" height="100"' }
|
237
|
+
end
|
238
|
+
end
|
200
239
|
end
|
201
240
|
|
202
241
|
describe "#render_asset" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksey V Zapparov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -25,35 +25,49 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: sass
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2
|
33
|
+
version: '3.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2
|
40
|
+
version: '3.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: fastimage
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '1.6'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '1.6'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: sprockets
|
56
|
+
name: sprockets
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.10'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.10'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sprockets-sass
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - ">="
|
@@ -67,19 +81,19 @@ dependencies:
|
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: sprockets-helpers
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
89
|
+
version: '0'
|
76
90
|
type: :runtime
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: bundler
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -201,7 +215,7 @@ rubyforge_project:
|
|
201
215
|
rubygems_version: 2.4.1
|
202
216
|
signing_key:
|
203
217
|
specification_version: 4
|
204
|
-
summary: jekyll-assets-0.
|
218
|
+
summary: jekyll-assets-0.12.0
|
205
219
|
test_files:
|
206
220
|
- spec/fixtures/.gitignore
|
207
221
|
- spec/fixtures/_assets/alert.js
|
@@ -242,4 +256,3 @@ test_files:
|
|
242
256
|
- spec/lib/jekyll/assets_plugin/tag_spec.rb
|
243
257
|
- spec/spec_helper.rb
|
244
258
|
- spec/support/fixtures_helpers.rb
|
245
|
-
has_rdoc:
|