jekyll-assets 0.7.6 → 0.7.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +48 -0
  3. data/Gemfile +4 -4
  4. data/Rakefile +5 -3
  5. data/lib/jekyll-assets/bootstrap.rb +6 -7
  6. data/lib/jekyll-assets/bourbon.rb +0 -1
  7. data/lib/jekyll-assets/compass.rb +2 -4
  8. data/lib/jekyll-assets/neat.rb +0 -1
  9. data/lib/jekyll/assets_plugin/asset_path.rb +1 -9
  10. data/lib/jekyll/assets_plugin/configuration.rb +18 -24
  11. data/lib/jekyll/assets_plugin/environment.rb +4 -12
  12. data/lib/jekyll/assets_plugin/filters.rb +1 -5
  13. data/lib/jekyll/assets_plugin/patches/asset_patch.rb +6 -23
  14. data/lib/jekyll/assets_plugin/patches/bundled_asset_patch.rb +1 -5
  15. data/lib/jekyll/assets_plugin/patches/context_patch.rb +2 -7
  16. data/lib/jekyll/assets_plugin/patches/index_patch.rb +2 -7
  17. data/lib/jekyll/assets_plugin/patches/processed_asset_patch.rb +19 -18
  18. data/lib/jekyll/assets_plugin/patches/site_patch.rb +11 -22
  19. data/lib/jekyll/assets_plugin/renderer.rb +7 -16
  20. data/lib/jekyll/assets_plugin/tag.rb +1 -6
  21. data/lib/jekyll/assets_plugin/version.rb +1 -1
  22. data/spec/lib/jekyll-assets/bootstrap_spec.rb +10 -10
  23. data/spec/lib/jekyll-assets/bourbon_spec.rb +0 -1
  24. data/spec/lib/jekyll-assets/compass_spec.rb +0 -1
  25. data/spec/lib/jekyll-assets/neat_spec.rb +0 -1
  26. data/spec/lib/jekyll/assets_plugin/configuration_spec.rb +30 -18
  27. data/spec/lib/jekyll/assets_plugin/environment_spec.rb +2 -3
  28. data/spec/lib/jekyll/assets_plugin/filters_spec.rb +8 -6
  29. data/spec/lib/jekyll/assets_plugin/patches/site_patch_spec.rb +13 -22
  30. data/spec/lib/jekyll/assets_plugin/renderer_spec.rb +8 -13
  31. data/spec/lib/jekyll/assets_plugin/tag_spec.rb +8 -6
  32. data/spec/spec_helper.rb +3 -7
  33. data/spec/support/fixtures_path.rb +2 -3
  34. metadata +4 -3
@@ -1,20 +1,16 @@
1
1
  # 3rd-party
2
2
  require "sprockets"
3
3
 
4
-
5
4
  module Jekyll
6
5
  module AssetsPlugin
7
6
  module Patches
8
7
  module BundledAssetPatch
9
-
10
8
  def jekyll_assets
11
9
  @processed_asset.jekyll_assets
12
10
  end
13
11
 
12
+ ::Sprockets::BundledAsset.send :include, self
14
13
  end
15
14
  end
16
15
  end
17
16
  end
18
-
19
-
20
- Sprockets::BundledAsset.send :include, Jekyll::AssetsPlugin::Patches::BundledAssetPatch
@@ -1,31 +1,26 @@
1
1
  # stdlib
2
2
  require "set"
3
3
 
4
-
5
4
  module Jekyll
6
5
  module AssetsPlugin
7
6
  module Patches
8
7
  module ContextPatch
9
-
10
8
  def site
11
9
  self.class.instance_variable_get :@site
12
10
  end
13
11
 
14
-
15
12
  def jekyll_assets
16
13
  @jekyll_assets ||= Set.new
17
14
  end
18
15
 
19
-
20
- def asset_path pathname, *args
16
+ def asset_path(pathname, *args)
21
17
  return "" if pathname.to_s.strip.empty?
22
18
  asset = resolve(pathname.to_s[/^[^#?]+/]).to_s
23
19
  jekyll_assets << asset
24
- (site.asset_path asset, *args) + (pathname.to_s[/[#?].+/] || '')
20
+ (site.asset_path asset, *args) + (pathname.to_s[/[#?].+/] || "")
25
21
  rescue Sprockets::FileNotFound
26
22
  raise Environment::AssetNotFound, pathname
27
23
  end
28
-
29
24
  end
30
25
  end
31
26
  end
@@ -1,30 +1,25 @@
1
1
  # 3rd-party
2
2
  require "sprockets"
3
3
 
4
-
5
4
  module Jekyll
6
5
  module AssetsPlugin
7
6
  module Patches
8
7
  module IndexPatch
9
-
10
- def self.included base
8
+ def self.included(base)
11
9
  base.class_eval do
12
10
  alias_method :__orig_find_asset, :find_asset
13
11
  alias_method :find_asset, :__wrap_find_asset
14
12
  end
15
13
  end
16
14
 
17
-
18
- def __wrap_find_asset path, options = {}
15
+ def __wrap_find_asset(path, options = {})
19
16
  __orig_find_asset(path, options).tap do |asset|
20
17
  asset.instance_variable_set :@site, @environment.site if asset
21
18
  end
22
19
  end
23
-
24
20
  end
25
21
  end
26
22
  end
27
23
  end
28
24
 
29
-
30
25
  Sprockets::Index.send :include, Jekyll::AssetsPlugin::Patches::IndexPatch
@@ -1,22 +1,22 @@
1
1
  # stdlib
2
2
  require "set"
3
3
 
4
-
5
4
  # 3rd-party
6
5
  require "sprockets"
7
6
 
8
-
9
7
  module Jekyll
10
8
  module AssetsPlugin
11
9
  module Patches
12
10
  module ProcessedAssetPatch
13
-
14
- def self.included base
11
+ def self.included(base)
15
12
  base.class_eval do
16
13
  attr_reader :jekyll_assets
17
14
 
18
- alias_method :__orig_build_dependency_paths, :build_dependency_paths
19
- alias_method :build_dependency_paths, :__wrap_build_dependency_paths
15
+ alias_method :__orig_build_dependency_paths,
16
+ :build_dependency_paths
17
+
18
+ alias_method :build_dependency_paths,
19
+ :__wrap_build_dependency_paths
20
20
 
21
21
  alias_method :__orig_init_with, :init_with
22
22
  alias_method :init_with, :__wrap_init_with
@@ -26,34 +26,35 @@ module Jekyll
26
26
  end
27
27
  end
28
28
 
29
-
30
- def __wrap_build_dependency_paths environment, context
29
+ def __wrap_build_dependency_paths(environment, context)
31
30
  @jekyll_assets = Set.new
32
31
 
33
32
  context.jekyll_assets.each do |path|
34
33
  @jekyll_assets << path
35
- environment.find_asset(path).jekyll_assets.each{ |p| @jekyll_assets << p }
34
+ environment.find_asset(path)
35
+ .jekyll_assets.each { |p| @jekyll_assets << p }
36
36
  end
37
37
 
38
38
  __orig_build_dependency_paths environment, context
39
39
  end
40
40
 
41
-
42
- def __wrap_init_with environment, coder
41
+ def __wrap_init_with(environment, coder)
43
42
  __orig_init_with environment, coder
44
- @jekyll_assets = Set.new coder["jekyll_assets"].map{ |p| expand_root_path(p) }
45
- end
46
43
 
44
+ @jekyll_assets = Set.new coder["jekyll_assets"]
45
+ .map { |p| expand_root_path(p) }
46
+ end
47
47
 
48
- def __wrap_encode_with coder
48
+ def __wrap_encode_with(coder)
49
49
  __orig_encode_with coder
50
- coder["jekyll_assets"] = jekyll_assets.map{ |p| relativize_root_path p }
50
+
51
+ coder["jekyll_assets"] = jekyll_assets.map do |path|
52
+ relativize_root_path path
53
+ end
51
54
  end
52
55
 
56
+ ::Sprockets::ProcessedAsset.send :include, self
53
57
  end
54
58
  end
55
59
  end
56
60
  end
57
-
58
-
59
- Sprockets::ProcessedAsset.send :include, Jekyll::AssetsPlugin::Patches::ProcessedAssetPatch
@@ -1,64 +1,55 @@
1
1
  # stdlib
2
2
  require "digest/md5"
3
3
 
4
-
5
4
  # 3rd-party
6
5
  require "jekyll"
7
6
 
8
-
9
7
  # internal
10
8
  require "jekyll/assets_plugin/configuration"
11
9
  require "jekyll/assets_plugin/environment"
12
10
  require "jekyll/assets_plugin/asset_path"
13
11
 
14
-
15
12
  module Jekyll
16
13
  module AssetsPlugin
17
14
  module Patches
18
15
  module SitePatch
19
-
20
- def self.included base
16
+ def self.included(base)
21
17
  base.class_eval do
22
18
  alias_method :__orig_write, :write
23
19
  alias_method :write, :__wrap_write
24
20
  end
25
21
  end
26
22
 
27
-
28
23
  def assets_config
29
- @assets_config ||= Configuration.new(self.config["assets"] || {})
24
+ @assets_config ||= Configuration.new(config["assets"] || {})
30
25
  end
31
26
 
32
-
33
27
  def assets
34
28
  @assets ||= Environment.new self
35
29
  end
36
30
 
37
-
38
31
  def asset_files
39
32
  @asset_files ||= []
40
33
  end
41
34
 
42
-
43
- def asset_path pathname, *args
35
+ def asset_path(pathname, *args)
44
36
  pathname, _, anchor = pathname.rpartition "#" if pathname["#"]
45
37
  pathname, _, query = pathname.rpartition "?" if pathname["?"]
46
38
 
47
- AssetPath.new(assets[pathname, *args]).tap{ |ap|
48
- ap.anchor = anchor
49
- ap.query = query
50
- }.to_s
51
- end
39
+ asset_path = AssetPath.new assets[pathname, *args]
40
+ asset_path.anchor = anchor
41
+ asset_path.query = query
52
42
 
43
+ asset_path.to_s
44
+ end
53
45
 
54
- def bundle_asset! asset
55
- if not asset_files.include? asset
46
+ def bundle_asset!(asset)
47
+ unless asset_files.include? asset
56
48
  asset_files << asset
57
- asset.jekyll_assets.each{ |path| bundle_asset! assets[path] }
49
+ asset.jekyll_assets.each { |path| bundle_asset! assets[path] }
58
50
  end
59
51
  end
60
52
 
61
-
62
53
  def __wrap_write
63
54
  static_files.push(*asset_files).uniq! do |asset|
64
55
  case hash = asset.hash
@@ -69,11 +60,9 @@ module Jekyll
69
60
 
70
61
  __orig_write
71
62
  end
72
-
73
63
  end
74
64
  end
75
65
  end
76
66
  end
77
67
 
78
-
79
68
  Jekyll::Site.send :include, Jekyll::AssetsPlugin::Patches::SitePatch
@@ -1,56 +1,47 @@
1
1
  module Jekyll
2
2
  module AssetsPlugin
3
3
  class Renderer
4
-
5
4
  STYLESHEET = '<link rel="stylesheet" href="%s">'
6
5
  JAVASCRIPT = '<script src="%s"></script>'
7
6
  IMAGE = '<img src="%s">'
8
7
 
9
-
10
- def initialize context, logical_path
8
+ def initialize(context, logical_path)
11
9
  @site = context.registers[:site]
12
10
  @path = logical_path.strip
13
11
  end
14
12
 
15
-
16
13
  def render_asset
17
14
  @site.assets[@path].to_s
18
15
  end
19
16
 
20
-
21
17
  def render_asset_path
22
18
  @site.asset_path @path
23
19
  end
24
20
 
25
-
26
21
  def render_javascript
27
22
  @path << ".js" if File.extname(@path).empty?
28
23
  render_tag JAVASCRIPT
29
24
  end
30
25
 
31
-
32
26
  def render_stylesheet
33
27
  @path << ".css" if File.extname(@path).empty?
34
28
  render_tag STYLESHEET
35
29
  end
36
30
 
37
-
38
31
  def render_image
39
32
  render_tag IMAGE
40
33
  end
41
34
 
42
-
43
35
  protected
44
36
 
45
-
46
- def render_tag template
37
+ def render_tag(template)
47
38
  asset = @site.assets[@path]
48
- (@site.assets_config.debug ? asset.to_a : [asset]).map{ |a|
49
- template % AssetPath.new(a).to_s
50
- }.join("\n")
51
- end
39
+ tags = (@site.assets_config.debug ? asset.to_a : [asset]).map do |a|
40
+ sprintf template, AssetPath.new(a).to_s
41
+ end
52
42
 
43
+ tags.join "\n"
44
+ end
53
45
  end
54
46
  end
55
47
  end
56
-
@@ -1,24 +1,19 @@
1
1
  # 3rd-party
2
2
  require "liquid"
3
3
 
4
-
5
4
  # internal
6
5
  require "jekyll/assets_plugin/renderer"
7
6
 
8
-
9
7
  module Jekyll
10
8
  module AssetsPlugin
11
9
  class Tag < Liquid::Tag
12
-
13
- def render context
10
+ def render(context)
14
11
  Renderer.new(context, @markup).send :"render_#{@tag_name}"
15
12
  end
16
-
17
13
  end
18
14
  end
19
15
  end
20
16
 
21
-
22
17
  %w{ asset asset_path image javascript stylesheet }.each do |tag|
23
18
  Liquid::Template.register_tag tag, Jekyll::AssetsPlugin::Tag
24
19
  end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module AssetsPlugin
3
- VERSION = "0.7.6"
3
+ VERSION = "0.7.7"
4
4
  end
5
5
  end
@@ -1,10 +1,10 @@
1
- require "spec_helper"
2
- require "jekyll-assets/bootstrap"
3
-
4
- module Jekyll::AssetsPlugin
5
- describe "Bootstrap integration" do
6
- it "should globally append bootstrap paths into Sprockets environment" do
7
- @site.assets["bootstrap.css"].to_s.should =~ /bootstrap\//
8
- end
9
- end
10
- end
1
+ require "spec_helper"
2
+ require "jekyll-assets/bootstrap"
3
+
4
+ module Jekyll::AssetsPlugin
5
+ describe "Bootstrap integration" do
6
+ it "should globally append bootstrap paths into Sprockets environment" do
7
+ @site.assets["bootstrap.css"].to_s.should =~ /bootstrap\//
8
+ end
9
+ end
10
+ end
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
  require "jekyll-assets/bourbon"
3
3
 
4
-
5
4
  module Jekyll::AssetsPlugin
6
5
  describe "Bourbon integration" do
7
6
  it "should globally append bourbon paths into Sprockets environment" do
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
  require "jekyll-assets/compass"
3
3
 
4
-
5
4
  module Jekyll::AssetsPlugin
6
5
  describe "Compass integration" do
7
6
  it "should globally append compass paths into Sprockets environment" do
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
  require "jekyll-assets/neat"
3
3
 
4
-
5
4
  module Jekyll::AssetsPlugin
6
5
  describe "Neat integration" do
7
6
  it "should globally append neat paths into Sprockets environment" do
@@ -1,10 +1,9 @@
1
1
  require "spec_helper"
2
2
 
3
-
4
3
  module Jekyll::AssetsPlugin
5
4
  describe Configuration do
6
5
  context "with defaults" do
7
- let(:config){ Configuration.new }
6
+ let(:config) { Configuration.new }
8
7
 
9
8
  context "output assets dirname" do
10
9
  subject { config.dirname }
@@ -64,10 +63,10 @@ module Jekyll::AssetsPlugin
64
63
  :css_compressor => "sass"
65
64
  })
66
65
 
67
- config.dirname.should == "assets"
68
- config.sources.should =~ %w{abc}
69
- config.js_compressor.should be_nil
70
- config.css_compressor.should == :sass
66
+ expect(config.dirname).to eq "assets"
67
+ expect(config.sources).to eq %w{abc}
68
+ expect(config.js_compressor).to be_nil
69
+ expect(config.css_compressor).to be :sass
71
70
  end
72
71
 
73
72
  context "#cache" do
@@ -96,13 +95,13 @@ module Jekyll::AssetsPlugin
96
95
 
97
96
  context "#js_compressor" do
98
97
  context "when js compressor is given as `uglify`" do
99
- let(:config){ Configuration.new(:js_compressor => "uglify") }
98
+ let(:config) { Configuration.new(:js_compressor => "uglify") }
100
99
  subject { config.js_compressor }
101
100
  it { should be :uglify }
102
101
  end
103
102
 
104
103
  context "otherwise" do
105
- let(:config){ Configuration.new }
104
+ let(:config) { Configuration.new }
106
105
  subject { config.js_compressor }
107
106
  it { should be_false }
108
107
  end
@@ -110,13 +109,13 @@ module Jekyll::AssetsPlugin
110
109
 
111
110
  context "#css_compressor" do
112
111
  context "when css compressor is given as `sass`" do
113
- let(:config){ Configuration.new(:css_compressor => "sass") }
112
+ let(:config) { Configuration.new(:css_compressor => "sass") }
114
113
  subject { config.css_compressor }
115
114
  it { should be :sass }
116
115
  end
117
116
 
118
117
  context "otherwise" do
119
- let(:config){ Configuration.new }
118
+ let(:config) { Configuration.new }
120
119
  subject { config.css_compressor }
121
120
  it { should be_false }
122
121
  end
@@ -124,26 +123,39 @@ module Jekyll::AssetsPlugin
124
123
 
125
124
  context "#gzip" do
126
125
  context "when gzip is disabled" do
127
- let(:config){ Configuration.new(:gzip => false) }
126
+ let(:config) { Configuration.new(:gzip => false) }
128
127
  subject { config.gzip }
129
128
  it { should == [] }
130
129
  end
131
130
  end
132
131
 
132
+ context "#version" do
133
+ subject { Configuration.new(:version => version).version }
134
+
135
+ context "when given as 123" do
136
+ let(:version) { 123 }
137
+ it { should eq 123 }
138
+ it { should be_a Integer }
139
+ end
140
+
141
+ context "when given as 'abc'" do
142
+ let(:version) { "abc" }
143
+ it { should eq "abc" }
144
+ it { should be_a String }
145
+ end
146
+ end
133
147
 
134
148
  context "Deprecated options" do
135
149
  context "compress" do
136
- let(:options){ { :compress => {:js => "uglify", :css => "sass"} } }
150
+ let(:options) { { :compress => { :js => "uglify", :css => "sass" } } }
151
+ subject { Configuration.new options }
137
152
 
138
- it "should set corresponding *_compressor value" do
139
- config = Configuration.new options
140
- config.js_compressor.should == :uglify
141
- config.css_compressor.should == :sass
142
- end
153
+ its(:js_compressor) { should be :uglify }
154
+ its(:css_compressor) { should be :sass }
143
155
  end
144
156
 
145
157
  context "cache_assets" do
146
- let(:options){ { :cache_assets => true } }
158
+ let(:options) { { :cache_assets => true } }
147
159
 
148
160
  it "should set `cache` value" do
149
161
  config = Configuration.new options