jekyll-asset-pipeline 0.1.2 → 0.1.3

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.
@@ -32,7 +32,6 @@ require 'jekyll_asset_pipeline/compressor'
32
32
  require 'jekyll_asset_pipeline/template'
33
33
  require 'jekyll_asset_pipeline/templates/javascript_tag_template'
34
34
  require 'jekyll_asset_pipeline/templates/css_tag_template'
35
- require 'jekyll_asset_pipeline/cache'
36
35
  require 'jekyll_asset_pipeline/pipeline'
37
36
 
38
37
  module JekyllAssetPipeline
@@ -4,12 +4,7 @@ module JekyllAssetPipeline
4
4
 
5
5
  def initialize(content)
6
6
  @content = content
7
- begin
8
- @compressed = self.compress
9
- rescue Exception => e
10
- puts "Failed to compress asset with '#{self.class.to_s}'."
11
- raise e
12
- end
7
+ @compressed = self.compress
13
8
  end
14
9
 
15
10
  # Returns compressed content
@@ -5,12 +5,7 @@ module JekyllAssetPipeline
5
5
  def initialize(asset)
6
6
  @content = asset.content
7
7
  @type = File.extname(asset.filename).downcase
8
- begin
9
- @converted = self.convert
10
- rescue Exception => e
11
- puts "Failed to convert asset '#{asset.filename}'."
12
- raise e
13
- end
8
+ @converted = self.convert
14
9
  end
15
10
 
16
11
  def converted
@@ -11,7 +11,7 @@ module JekyllAssetPipeline
11
11
  original_return_val = old_cleanup_method.bind(self).call()
12
12
 
13
13
  # Clear Jekyll Asset Pipeline cache
14
- JekyllAssetPipeline::Cache.clear
14
+ Pipeline.clear_cache
15
15
 
16
16
  original_return_val
17
17
  end
@@ -11,42 +11,25 @@ module JekyllAssetPipeline
11
11
  end
12
12
 
13
13
  def render(context)
14
- # Get YAML manifest from Liquid block
15
- manifest = @nodelist.first
16
- prefix = @markup.lstrip.rstrip
17
-
18
- # Get site instance from Jekyll
19
14
  site = context.registers[:site]
20
-
21
- # Initialize configuration hash
22
15
  config = site.config['asset_pipeline'] || {}
23
16
 
24
- # Generate hash based on asset last modified dates and config options
25
- hash = JekyllAssetPipeline::Pipeline.hash(site.source, manifest, config)
26
-
27
- # Fetch pipeline from cache if recently processed
28
- if JekyllAssetPipeline::Cache.has_key?(hash)
29
- pipeline = JekyllAssetPipeline::Cache.get(hash)
30
-
31
- # Return HTML tags pointing to assets
32
- return pipeline.html
33
- else
34
- # Create pipeline and process assets
35
- puts "Asset Pipeline: Processing '#{self.class.tag_name}' manifest '#{prefix}'"
36
- pipeline = JekyllAssetPipeline::Pipeline.new(manifest, prefix, site.source, site.dest, self.class.output_type, config)
37
- pipeline.process
17
+ # Run Jekyll Asset Pipeline
18
+ pipeline, cached = Pipeline.run(@nodelist.first, @markup.strip, site.source,
19
+ site.dest, self.class.tag_name, self.class.output_type, config)
38
20
 
39
- # Prevent Jekyll from cleaning up saved assets
21
+ if pipeline.is_a?(Pipeline)
22
+ # Prevent Jekyll from cleaning up saved assets if new pipeline
40
23
  pipeline.assets.each do |asset|
41
- puts "Asset Pipeline: Saved '#{asset.filename}' to '#{site.dest}/#{asset.output_path}'"
42
- site.static_files << JekyllAssetPipeline::StaticAssetFile.new(site, site.dest, asset.output_path, asset.filename)
43
- end
24
+ site.static_files << StaticAssetFile.new(site, site.dest,
25
+ asset.output_path, asset.filename)
26
+ end unless cached
44
27
 
45
- # Cache pipeline
46
- JekyllAssetPipeline::Cache.add(hash, pipeline)
47
-
48
- # Return HTML tags pointing to assets
28
+ # Return HTML tag pointing to asset
49
29
  return pipeline.html
30
+ else
31
+ # Return nothing
32
+ return nil
50
33
  end
51
34
  end
52
35
  end
@@ -1,5 +1,69 @@
1
1
  module JekyllAssetPipeline
2
2
  class Pipeline
3
+ class << self
4
+ # Generate hash based on manifest
5
+ def hash(source, manifest, options = {})
6
+ options = DEFAULTS.merge(options)
7
+ begin
8
+ Digest::MD5.hexdigest(YAML::load(manifest).map! do |path|
9
+ "#{path}#{File.mtime(File.join(source, path)).to_i}"
10
+ end.join.concat(options.to_s))
11
+ rescue Exception => e
12
+ puts "Failed to generate hash from provided manifest."
13
+ raise e
14
+ end
15
+ end
16
+
17
+ # Run pipeline
18
+ def run(manifest, prefix, source, destination, tag, type, config)
19
+ # Get hash for pipeline
20
+ hash = hash(source, manifest, config)
21
+
22
+ # Check if pipeline has been cached
23
+ if cache.has_key?(hash)
24
+ # Return cached pipeline and cached status
25
+ return cache[hash], true
26
+ else
27
+ begin
28
+ puts "Processing '#{tag}' manifest '#{prefix}'"
29
+
30
+ # Create and process new pipeline
31
+ pipeline = self.new(manifest, prefix, source, destination, type, config)
32
+ pipeline.assets.each do |asset|
33
+ puts "Saved '#{asset.filename}' to '#{destination}/#{asset.output_path}'"
34
+ end
35
+
36
+ # Add processed pipeline to cache
37
+ cache[hash] = pipeline
38
+
39
+ # Return newly processed pipeline and cached status
40
+ return pipeline, false
41
+ rescue Exception => e
42
+ # Add exception to cache
43
+ cache[hash] = e
44
+
45
+ # Re-raise the exception
46
+ raise e
47
+ end
48
+ end
49
+ end
50
+
51
+ # Cache processed pipelines
52
+ def cache
53
+ @cache ||= {}
54
+ end
55
+
56
+ # Empty cache
57
+ def clear_cache
58
+ @cache = {}
59
+ end
60
+
61
+ # Add prefix to output
62
+ def puts(message)
63
+ $stdout.puts("Asset Pipeline: #{message}")
64
+ end
65
+ end
66
+
3
67
  # Initialize new pipeline
4
68
  def initialize(manifest, prefix, source, destination, type, options = {})
5
69
  @manifest = manifest
@@ -8,10 +72,14 @@ module JekyllAssetPipeline
8
72
  @destination = destination
9
73
  @type = type
10
74
  @options = JekyllAssetPipeline::DEFAULTS.merge(options)
75
+
76
+ process
11
77
  end
12
78
 
13
79
  attr_reader :assets, :html
14
80
 
81
+ private
82
+
15
83
  # Process the pipeline
16
84
  def process
17
85
  collect
@@ -23,21 +91,6 @@ module JekyllAssetPipeline
23
91
  markup
24
92
  end
25
93
 
26
- # Generate hash based on manifest contents
27
- def self.hash(source, manifest, options = {})
28
- options = JekyllAssetPipeline::DEFAULTS.merge(options)
29
- begin
30
- Digest::MD5.hexdigest(YAML::load(manifest).map! do |path|
31
- "#{path}#{File.mtime(File.join(source, path)).to_i}"
32
- end.join.concat(options.to_s))
33
- rescue Exception => e
34
- puts "Asset Pipeline: Failed to generate hash from provided manifest."
35
- raise e
36
- end
37
- end
38
-
39
- private
40
-
41
94
  # Collect assets based on manifest
42
95
  def collect
43
96
  begin
@@ -154,7 +207,7 @@ module JekyllAssetPipeline
154
207
  @html = @assets.map do |asset|
155
208
  klass = JekyllAssetPipeline::Template.subclasses.select do |t|
156
209
  t.filetype == File.extname(asset.filename).downcase
157
- end.sort! { |x, y| y.priority <=> x.priority }.last
210
+ end.sort! { |x, y| x.priority <=> y.priority }.last
158
211
 
159
212
  html = klass.new(path, asset.filename).html unless klass.nil?
160
213
 
@@ -1,3 +1,3 @@
1
1
  module JekyllAssetPipeline
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-asset-pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,62 +9,62 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-26 00:00:00.000000000 Z
12
+ date: 2012-12-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jekyll
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.10.0
21
+ version: '0.12'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.10.0
29
+ version: '0.12'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: liquid
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ! '>='
35
+ - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 1.9.0
37
+ version: '2.4'
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ! '>='
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 1.9.0
45
+ version: '2.4'
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: rake
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '0.9'
53
+ version: '10.0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ! '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0.9'
61
+ version: '10.0'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: minitest
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - ! '>='
67
+ - - ~>
68
68
  - !ruby/object:Gem::Version
69
69
  version: '4.3'
70
70
  type: :development
@@ -72,7 +72,7 @@ dependencies:
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
- - - ! '>='
75
+ - - ~>
76
76
  - !ruby/object:Gem::Version
77
77
  version: '4.3'
78
78
  description: Adds asset preprocessing (CoffeeScript, Sass, Less, ERB, etc.) and asset
@@ -84,7 +84,6 @@ extensions: []
84
84
  extra_rdoc_files: []
85
85
  files:
86
86
  - lib/jekyll_asset_pipeline/asset.rb
87
- - lib/jekyll_asset_pipeline/cache.rb
88
87
  - lib/jekyll_asset_pipeline/compressor.rb
89
88
  - lib/jekyll_asset_pipeline/converter.rb
90
89
  - lib/jekyll_asset_pipeline/extensions/jekyll/site.rb
@@ -1,21 +0,0 @@
1
- module JekyllAssetPipeline
2
- class Cache
3
- @cache = {}
4
-
5
- def self.add(key, value)
6
- @cache[key] = value
7
- end
8
-
9
- def self.has_key?(key)
10
- @cache.has_key?(key)
11
- end
12
-
13
- def self.get(key)
14
- @cache[key]
15
- end
16
-
17
- def self.clear
18
- @cache = {}
19
- end
20
- end
21
- end