jekyll-assets 0.3.5 → 0.3.6
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 +7 -0
- data/.travis.yml +1 -1
- data/Gemfile +7 -0
- data/HISTORY.md +5 -0
- data/README.md +2 -0
- data/lib/jekyll/assets_plugin.rb +1 -1
- data/lib/jekyll/assets_plugin/environment.rb +1 -10
- data/lib/jekyll/assets_plugin/patches.rb +1 -0
- data/lib/jekyll/assets_plugin/{environment → patches}/context_patch.rb +1 -1
- data/lib/jekyll/assets_plugin/patches/index_patch.rb +30 -0
- data/lib/jekyll/assets_plugin/patches/site_patch.rb +73 -0
- data/lib/jekyll/assets_plugin/version.rb +1 -1
- data/spec/lib/jekyll/assets_plugin/patches/site_patch_spec.rb +133 -0
- data/spec/spec_helper.rb +11 -0
- metadata +34 -58
- data/lib/jekyll/assets_plugin/environment/index_patch.rb +0 -15
- data/lib/jekyll/assets_plugin/site_patch.rb +0 -71
- data/spec/lib/jekyll/assets_plugin/site_patch_spec.rb +0 -131
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 832045a15d6f254fb11848378bf00c5b94894515
|
4
|
+
data.tar.gz: 2985a2194b2393f21199d8faf70a22d33e6f133a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 217c2da729697c4e7cc95aa0e7c424ae234423ce8b94ac0ee27e8d1a47069316bd1342f189d0c2a54fa52ac8ac3eab1bbdac59d4c2610e9349f9a7c7af0cebce
|
7
|
+
data.tar.gz: 118175635e6306e85929ff95549a927b695600416417f549310d6333e3ab1d0adb4778623165aa1bb6846a3350bea4902f205d5b147678e1ee42cff899811d06
|
data/.travis.yml
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
language: ruby
|
2
|
-
rvm: [ 1.9.3 ]
|
2
|
+
rvm: [ 1.9.3, 2.0.0 ]
|
data/Gemfile
CHANGED
data/HISTORY.md
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# Jekyll::AssetsPlugin
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/jekyll-assets)
|
3
4
|
[](http://travis-ci.org/ixti/jekyll-assets)
|
4
5
|
[](https://gemnasium.com/ixti/jekyll-assets)
|
5
6
|
[](https://codeclimate.com/github/ixti/jekyll-assets)
|
7
|
+
[](https://coveralls.io/r/ixti/jekyll-assets)
|
6
8
|
|
7
9
|
Jekyll plugin, that adds Rails-alike assets pipeline, that means that:
|
8
10
|
|
data/lib/jekyll/assets_plugin.rb
CHANGED
@@ -18,10 +18,6 @@ module Jekyll
|
|
18
18
|
end
|
19
19
|
|
20
20
|
|
21
|
-
autoload :ContextPatch, "jekyll/assets_plugin/environment/context_patch"
|
22
|
-
autoload :IndexPatch, "jekyll/assets_plugin/environment/index_patch"
|
23
|
-
|
24
|
-
|
25
21
|
attr_reader :site
|
26
22
|
|
27
23
|
|
@@ -42,7 +38,7 @@ module Jekyll
|
|
42
38
|
# bind jekyll and Sprockets context together
|
43
39
|
context_class.instance_variable_set :@site, @site
|
44
40
|
|
45
|
-
context_class.send :include, ContextPatch
|
41
|
+
context_class.send :include, Patches::ContextPatch
|
46
42
|
end
|
47
43
|
|
48
44
|
|
@@ -50,11 +46,6 @@ module Jekyll
|
|
50
46
|
super or raise AssetNotFound, path
|
51
47
|
end
|
52
48
|
|
53
|
-
|
54
|
-
def index
|
55
|
-
super.tap { |index| index.singleton_class.send :include, IndexPatch }
|
56
|
-
end
|
57
|
-
|
58
49
|
end
|
59
50
|
end
|
60
51
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Dir[File.join File.dirname(__FILE__), "patches/**/*.rb"].each { |f| require f }
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# 3rd-party
|
2
|
+
require "sprockets"
|
3
|
+
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
module AssetsPlugin
|
7
|
+
module Patches
|
8
|
+
module IndexPatch
|
9
|
+
|
10
|
+
def self.included base
|
11
|
+
base.class_eval do
|
12
|
+
alias_method :find_asset_without_jekyll, :find_asset
|
13
|
+
alias_method :find_asset, :find_asset_with_jekyll
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def find_asset_with_jekyll path, options = {}
|
19
|
+
asset = find_asset_without_jekyll path, options
|
20
|
+
@environment.site.bundle_asset! asset if asset and options[:bundle]
|
21
|
+
asset
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
Sprockets::Index.send :include, Jekyll::AssetsPlugin::Patches::IndexPatch
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# 3rd-party
|
2
|
+
require "jekyll"
|
3
|
+
|
4
|
+
|
5
|
+
# internal
|
6
|
+
require "jekyll/assets_plugin/configuration"
|
7
|
+
require "jekyll/assets_plugin/environment"
|
8
|
+
|
9
|
+
|
10
|
+
module Jekyll
|
11
|
+
module AssetsPlugin
|
12
|
+
module Patches
|
13
|
+
module SitePatch
|
14
|
+
|
15
|
+
def self.included base
|
16
|
+
base.class_eval do
|
17
|
+
alias_method :write_without_assets, :write
|
18
|
+
alias_method :write, :write_with_assets
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def assets_config
|
24
|
+
@assets_config ||= Configuration.new(self.config["assets"] || {})
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def assets
|
29
|
+
@assets ||= Environment.new self
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def asset_files
|
34
|
+
@asset_files ||= []
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def asset_path *args
|
39
|
+
asset = assets[*args]
|
40
|
+
baseurl = "#{assets_config.baseurl}/"
|
41
|
+
cachebust = assets_config.cachebust
|
42
|
+
|
43
|
+
case cachebust
|
44
|
+
when :none then baseurl << asset.logical_path
|
45
|
+
when :soft then baseurl << asset.logical_path << "?cb=#{asset.digest}"
|
46
|
+
when :hard then baseurl << asset.digest_path
|
47
|
+
else raise "Unknown cachebust strategy: #{cachebust.inspect}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def bundle_asset! asset
|
53
|
+
if not asset_files.include? asset
|
54
|
+
file = AssetFile.new self, asset
|
55
|
+
|
56
|
+
asset_files << file
|
57
|
+
static_files << file
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
def write_with_assets
|
63
|
+
static_files.push(*asset_files).uniq!
|
64
|
+
write_without_assets
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
Jekyll::Site.send :include, Jekyll::AssetsPlugin::Patches::SitePatch
|
@@ -0,0 +1,133 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
|
4
|
+
module Jekyll::AssetsPlugin
|
5
|
+
module Patches
|
6
|
+
describe SitePatch do
|
7
|
+
let(:site) do
|
8
|
+
Class.new(Jekyll::Site) do
|
9
|
+
include SitePatch
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
self.reset
|
13
|
+
end
|
14
|
+
|
15
|
+
def config
|
16
|
+
@config ||= {
|
17
|
+
"dirname" => "foobar",
|
18
|
+
"assets" => {
|
19
|
+
"sources" => [ "foobar", "_assets" ]
|
20
|
+
}
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def source
|
25
|
+
@source ||= RSpecHelpers.fixtures_path.to_s
|
26
|
+
end
|
27
|
+
end.new
|
28
|
+
end
|
29
|
+
|
30
|
+
context "#assets" do
|
31
|
+
subject { site.assets }
|
32
|
+
it { should be_a_kind_of Sprockets::Environment }
|
33
|
+
|
34
|
+
context "calling #asset_path within assets" do
|
35
|
+
context "when requested file not found" do
|
36
|
+
it "should raise a NotFound error" do
|
37
|
+
Proc.new do
|
38
|
+
site.assets["should_fail.css"]
|
39
|
+
end.should raise_error(Environment::AssetNotFound)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when requested file found" do
|
44
|
+
it "should have proper asset path" do
|
45
|
+
noise_img_re = %r{url\(/assets/noise-[a-f0-9]{32}\.png\)}
|
46
|
+
site.assets["app.css"].to_s.should match(noise_img_re)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should be appended to the static_files list" do
|
50
|
+
asset = site.assets["app.css"] # make sure main asset was compiled
|
51
|
+
asset = site.assets["noise.png"]
|
52
|
+
|
53
|
+
site.static_files.include?(asset).should be_true
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "with Liquid markup within assets" do
|
59
|
+
it "should be rendered" do
|
60
|
+
site.assets["app.js"].to_s.should match(/noise-[a-f0-9]{32}\.png/)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
context "#asset_path" do
|
67
|
+
subject { site.asset_path "app.css" }
|
68
|
+
|
69
|
+
context "with none cachebust" do
|
70
|
+
before { site.assets_config.cachebust = :none }
|
71
|
+
it { should match(%r{^/assets/app\.css$}) }
|
72
|
+
end
|
73
|
+
|
74
|
+
context "with soft cachebust" do
|
75
|
+
before { site.assets_config.cachebust = :soft }
|
76
|
+
it { should match(%r{^/assets/app\.css\?cb=[a-f0-9]{32}$}) }
|
77
|
+
end
|
78
|
+
|
79
|
+
context "with hard cachebust" do
|
80
|
+
before { site.assets_config.cachebust = :hard }
|
81
|
+
it { should match(%r{^/assets/app-[a-f0-9]{32}\.css$}) }
|
82
|
+
end
|
83
|
+
|
84
|
+
context "with unknown cachebust" do
|
85
|
+
before { site.assets_config.cachebust = :wtf }
|
86
|
+
it "should raise error" do
|
87
|
+
expect { site.asset_path "app.css" }.to raise_error
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
context "#assets_config" do
|
94
|
+
subject { site.assets_config }
|
95
|
+
it { should be_an_instance_of Configuration }
|
96
|
+
|
97
|
+
it "should been populated with `assets` section of config" do
|
98
|
+
site.assets_config.dirname.should_not == "foobar"
|
99
|
+
site.assets_config.sources.should include "foobar"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
it "should regenerate assets upon multiple #process" do
|
105
|
+
@site.assets_config.cachebust = :none
|
106
|
+
2.times { @site.process }
|
107
|
+
|
108
|
+
@dest.join("assets", "app.css").exist?.should be_true
|
109
|
+
end
|
110
|
+
|
111
|
+
context "#gzip" do
|
112
|
+
subject { site.assets_config }
|
113
|
+
|
114
|
+
it "should generate a static assets if gzip is enabled" do
|
115
|
+
@site.assets_config.gzip = true
|
116
|
+
@site.process
|
117
|
+
@dest.join("assets", "app.css.gz").exist?.should be_true
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should not generate a static assets if gzip is enabled" do
|
121
|
+
@site.assets_config.gzip = false
|
122
|
+
@site.process
|
123
|
+
@dest.join("assets", "app.css.gz").exist?.should be_false
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should be included into Jekyll::Site" do
|
129
|
+
Jekyll::Site.included_modules.should include SitePatch
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
|
3
3
|
|
4
|
+
require 'simplecov'
|
5
|
+
require "coveralls"
|
6
|
+
|
7
|
+
|
8
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
9
|
+
SimpleCov::Formatter::HTMLFormatter,
|
10
|
+
Coveralls::SimpleCov::Formatter
|
11
|
+
]
|
12
|
+
SimpleCov.start
|
13
|
+
|
14
|
+
|
4
15
|
require "jekyll"
|
5
16
|
require "liquid"
|
6
17
|
require "sprockets"
|
metadata
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Aleksey V Zapparov
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-04-28 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: jekyll
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: sprockets
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,118 +41,105 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: guard-rspec
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rb-inotify
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: compass
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: bourbon
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - '>='
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: neat
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - '>='
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: '0'
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
|
-
description:
|
159
|
-
|
160
|
-
|
139
|
+
description: |2
|
140
|
+
Jekyll plugin, that allows you to write javascript/css assets in
|
141
|
+
other languages such as CoffeeScript, Sass, Less and ERB, concatenate
|
142
|
+
them, respecting dependencies, minify and many more.
|
161
143
|
email:
|
162
144
|
- ixti@member.fsf.org
|
163
145
|
executables: []
|
@@ -183,12 +165,13 @@ files:
|
|
183
165
|
- lib/jekyll/assets_plugin/asset_file.rb
|
184
166
|
- lib/jekyll/assets_plugin/configuration.rb
|
185
167
|
- lib/jekyll/assets_plugin/environment.rb
|
186
|
-
- lib/jekyll/assets_plugin/environment/context_patch.rb
|
187
|
-
- lib/jekyll/assets_plugin/environment/index_patch.rb
|
188
168
|
- lib/jekyll/assets_plugin/filters.rb
|
189
169
|
- lib/jekyll/assets_plugin/liquid_processor.rb
|
170
|
+
- lib/jekyll/assets_plugin/patches.rb
|
171
|
+
- lib/jekyll/assets_plugin/patches/context_patch.rb
|
172
|
+
- lib/jekyll/assets_plugin/patches/index_patch.rb
|
173
|
+
- lib/jekyll/assets_plugin/patches/site_patch.rb
|
190
174
|
- lib/jekyll/assets_plugin/renderer.rb
|
191
|
-
- lib/jekyll/assets_plugin/site_patch.rb
|
192
175
|
- lib/jekyll/assets_plugin/tag.rb
|
193
176
|
- lib/jekyll/assets_plugin/version.rb
|
194
177
|
- spec/fixtures/.gitignore
|
@@ -211,41 +194,34 @@ files:
|
|
211
194
|
- spec/lib/jekyll/assets_plugin/asset_file_spec.rb
|
212
195
|
- spec/lib/jekyll/assets_plugin/configuration_spec.rb
|
213
196
|
- spec/lib/jekyll/assets_plugin/filters_spec.rb
|
214
|
-
- spec/lib/jekyll/assets_plugin/site_patch_spec.rb
|
197
|
+
- spec/lib/jekyll/assets_plugin/patches/site_patch_spec.rb
|
215
198
|
- spec/lib/jekyll/assets_plugin/tag_spec.rb
|
216
199
|
- spec/spec_helper.rb
|
217
200
|
- spec/support/fixtures_path.rb
|
218
201
|
homepage: http://ixti.github.com/jekyll-assets
|
219
202
|
licenses:
|
220
203
|
- MIT
|
204
|
+
metadata: {}
|
221
205
|
post_install_message:
|
222
206
|
rdoc_options: []
|
223
207
|
require_paths:
|
224
208
|
- lib
|
225
209
|
required_ruby_version: !ruby/object:Gem::Requirement
|
226
|
-
none: false
|
227
210
|
requirements:
|
228
|
-
- -
|
211
|
+
- - '>='
|
229
212
|
- !ruby/object:Gem::Version
|
230
213
|
version: '0'
|
231
|
-
segments:
|
232
|
-
- 0
|
233
|
-
hash: -3616688251786802351
|
234
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
235
|
-
none: false
|
236
215
|
requirements:
|
237
|
-
- -
|
216
|
+
- - '>='
|
238
217
|
- !ruby/object:Gem::Version
|
239
218
|
version: '0'
|
240
|
-
segments:
|
241
|
-
- 0
|
242
|
-
hash: -3616688251786802351
|
243
219
|
requirements: []
|
244
220
|
rubyforge_project:
|
245
|
-
rubygems_version:
|
221
|
+
rubygems_version: 2.0.0
|
246
222
|
signing_key:
|
247
|
-
specification_version:
|
248
|
-
summary: jekyll-assets-0.3.
|
223
|
+
specification_version: 4
|
224
|
+
summary: jekyll-assets-0.3.6
|
249
225
|
test_files:
|
250
226
|
- spec/fixtures/.gitignore
|
251
227
|
- spec/fixtures/_assets/app.css.erb
|
@@ -267,7 +243,7 @@ test_files:
|
|
267
243
|
- spec/lib/jekyll/assets_plugin/asset_file_spec.rb
|
268
244
|
- spec/lib/jekyll/assets_plugin/configuration_spec.rb
|
269
245
|
- spec/lib/jekyll/assets_plugin/filters_spec.rb
|
270
|
-
- spec/lib/jekyll/assets_plugin/site_patch_spec.rb
|
246
|
+
- spec/lib/jekyll/assets_plugin/patches/site_patch_spec.rb
|
271
247
|
- spec/lib/jekyll/assets_plugin/tag_spec.rb
|
272
248
|
- spec/spec_helper.rb
|
273
249
|
- spec/support/fixtures_path.rb
|
@@ -1,71 +0,0 @@
|
|
1
|
-
# 3rd-party
|
2
|
-
require "jekyll"
|
3
|
-
|
4
|
-
|
5
|
-
# internal
|
6
|
-
require "jekyll/assets_plugin/configuration"
|
7
|
-
require "jekyll/assets_plugin/environment"
|
8
|
-
|
9
|
-
|
10
|
-
module Jekyll
|
11
|
-
module AssetsPlugin
|
12
|
-
module SitePatch
|
13
|
-
|
14
|
-
def self.included base
|
15
|
-
base.class_eval do
|
16
|
-
alias_method :write_without_assets, :write
|
17
|
-
alias_method :write, :write_with_assets
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
def assets_config
|
23
|
-
@assets_config ||= Configuration.new(self.config["assets"] || {})
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
|
-
def assets
|
28
|
-
@assets ||= Environment.new self
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
def asset_files
|
33
|
-
@asset_files ||= []
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
def asset_path *args
|
38
|
-
asset = assets[*args]
|
39
|
-
baseurl = "#{assets_config.baseurl}/"
|
40
|
-
cachebust = assets_config.cachebust
|
41
|
-
|
42
|
-
case cachebust
|
43
|
-
when :none then baseurl << asset.logical_path
|
44
|
-
when :soft then baseurl << asset.logical_path << "?cb=#{asset.digest}"
|
45
|
-
when :hard then baseurl << asset.digest_path
|
46
|
-
else raise "Unknown cachebust strategy: #{cachebust.inspect}"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
def bundle_asset! asset
|
52
|
-
if not asset_files.include? asset
|
53
|
-
file = AssetFile.new self, asset
|
54
|
-
|
55
|
-
asset_files << file
|
56
|
-
static_files << file
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
|
-
def write_with_assets
|
62
|
-
static_files.push(*asset_files).uniq!
|
63
|
-
write_without_assets
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
|
71
|
-
Jekyll::Site.send :include, Jekyll::AssetsPlugin::SitePatch
|
@@ -1,131 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
|
4
|
-
module Jekyll::AssetsPlugin
|
5
|
-
describe SitePatch do
|
6
|
-
let(:site) do
|
7
|
-
Class.new(Jekyll::Site) do
|
8
|
-
include SitePatch
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
self.reset
|
12
|
-
end
|
13
|
-
|
14
|
-
def config
|
15
|
-
@config ||= {
|
16
|
-
"dirname" => "foobar",
|
17
|
-
"assets" => {
|
18
|
-
"sources" => [ "foobar", "_assets" ]
|
19
|
-
}
|
20
|
-
}
|
21
|
-
end
|
22
|
-
|
23
|
-
def source
|
24
|
-
@source ||= RSpecHelpers.fixtures_path.to_s
|
25
|
-
end
|
26
|
-
end.new
|
27
|
-
end
|
28
|
-
|
29
|
-
context "#assets" do
|
30
|
-
subject { site.assets }
|
31
|
-
it { should be_a_kind_of Sprockets::Environment }
|
32
|
-
|
33
|
-
context "calling #asset_path within assets" do
|
34
|
-
context "when requested file not found" do
|
35
|
-
it "should raise a NotFound error" do
|
36
|
-
Proc.new do
|
37
|
-
site.assets["should_fail.css"]
|
38
|
-
end.should raise_error(Environment::AssetNotFound)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context "when requested file found" do
|
43
|
-
it "should have proper asset path" do
|
44
|
-
noise_img_re = %r{url\(/assets/noise-[a-f0-9]{32}\.png\)}
|
45
|
-
site.assets["app.css"].to_s.should match(noise_img_re)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should be appended to the static_files list" do
|
49
|
-
asset = site.assets["app.css"] # make sure main asset was compiled
|
50
|
-
asset = site.assets["noise.png"]
|
51
|
-
|
52
|
-
site.static_files.include?(asset).should be_true
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context "with Liquid markup within assets" do
|
58
|
-
it "should be rendered" do
|
59
|
-
site.assets["app.js"].to_s.should match(/noise-[a-f0-9]{32}\.png/)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
context "#asset_path" do
|
66
|
-
subject { site.asset_path "app.css" }
|
67
|
-
|
68
|
-
context "with none cachebust" do
|
69
|
-
before { site.assets_config.cachebust = :none }
|
70
|
-
it { should match(%r{^/assets/app\.css$}) }
|
71
|
-
end
|
72
|
-
|
73
|
-
context "with soft cachebust" do
|
74
|
-
before { site.assets_config.cachebust = :soft }
|
75
|
-
it { should match(%r{^/assets/app\.css\?cb=[a-f0-9]{32}$}) }
|
76
|
-
end
|
77
|
-
|
78
|
-
context "with hard cachebust" do
|
79
|
-
before { site.assets_config.cachebust = :hard }
|
80
|
-
it { should match(%r{^/assets/app-[a-f0-9]{32}\.css$}) }
|
81
|
-
end
|
82
|
-
|
83
|
-
context "with unknown cachebust" do
|
84
|
-
before { site.assets_config.cachebust = :wtf }
|
85
|
-
it "should raise error" do
|
86
|
-
expect { site.asset_path "app.css" }.to raise_error
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
|
92
|
-
context "#assets_config" do
|
93
|
-
subject { site.assets_config }
|
94
|
-
it { should be_an_instance_of Configuration }
|
95
|
-
|
96
|
-
it "should been populated with `assets` section of config" do
|
97
|
-
site.assets_config.dirname.should_not == "foobar"
|
98
|
-
site.assets_config.sources.should include "foobar"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
|
103
|
-
it "should regenerate assets upon multiple #process" do
|
104
|
-
@site.assets_config.cachebust = :none
|
105
|
-
2.times { @site.process }
|
106
|
-
|
107
|
-
@dest.join("assets", "app.css").exist?.should be_true
|
108
|
-
end
|
109
|
-
|
110
|
-
context "#gzip" do
|
111
|
-
subject { site.assets_config }
|
112
|
-
|
113
|
-
it "should generate a static assets if gzip is enabled" do
|
114
|
-
@site.assets_config.gzip = true
|
115
|
-
@site.process
|
116
|
-
@dest.join("assets", "app.css.gz").exist?.should be_true
|
117
|
-
end
|
118
|
-
|
119
|
-
it "should not generate a static assets if gzip is enabled" do
|
120
|
-
@site.assets_config.gzip = false
|
121
|
-
@site.process
|
122
|
-
@dest.join("assets", "app.css.gz").exist?.should be_false
|
123
|
-
end
|
124
|
-
|
125
|
-
end
|
126
|
-
|
127
|
-
it "should be included into Jekyll::Site" do
|
128
|
-
Jekyll::Site.included_modules.should include SitePatch
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|