asset_fingerprinter 0.0.1 → 0.0.2

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.
@@ -0,0 +1,14 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :version => 2, :cli => '--colour' do
5
+ watch(%r{^spec/.+_spec\.rb})
6
+ watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
10
+ guard 'bundler' do
11
+ watch('Gemfile')
12
+ # Uncomment next line if Gemfile contain `gemspec' command
13
+ # watch(/^.+\.gemspec/)
14
+ end
@@ -1,14 +1,4 @@
1
- require 'digest/md5'
2
-
3
1
  module AssetFingerprinter
4
- class DigestFingerprint
5
- # Digests a file and returns the cachebusted path
6
- def initialize
7
- @cache = Hash.new{ |hash,key| hash[key] = Digest::MD5.hexdigest(File.read(key)) }
8
- end
9
-
10
- def call(path)
11
- @cache[path]
12
- end
13
- end
14
- end
2
+ autoload :Fingerprinter, 'asset_fingerprinter/fingerprinter'
3
+ autoload :PathRewriter, 'asset_fingerprinter/path_rewriter'
4
+ end
@@ -0,0 +1,16 @@
1
+ require 'digest/md5'
2
+
3
+ module AssetFingerprinter
4
+ module Fingerprinter
5
+ class Digest
6
+ # Digests a file and returns the cachebusted path
7
+ def initialize
8
+ @cache = Hash.new{ |hash,key| hash[key] = ::Digest::MD5.hexdigest(File.read(key)) }
9
+ end
10
+
11
+ def call(path)
12
+ @cache[path]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ module AssetFingerprinter
2
+ class PathRewriter
3
+ module Format
4
+ Filename = lambda{|path, token| "#{$1}-fp-#{token}#{$2}" if path =~ /^(.*)(\.\w+)$/ }
5
+ QueryString = lambda{|path, token| "#{path}?#{token}" }
6
+ end
7
+
8
+ attr_accessor :fingerprinter, :pattern
9
+
10
+ def initialize
11
+ yield self if block_given?
12
+ end
13
+
14
+ def call(path)
15
+ pattern.call(path, fingerprinter.call(path))
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module AssetFingerprinter
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+ require 'digest/md5'
3
+
4
+ describe Fingerprinter::Digest do
5
+ it "should fingerprint a file" do
6
+ digest = Digest::MD5.hexdigest File.read(__FILE__)
7
+ Fingerprinter::Digest.new.call(__FILE__).should eql(digest)
8
+ end
9
+ end
10
+
11
+ describe PathRewriter do
12
+ before(:each) do
13
+ @path = __FILE__
14
+ @dir, @file = File.split(@path)
15
+ @ext = File.extname(@file)
16
+ @base = File.basename(@file, @ext)
17
+ @digest = Digest::MD5.hexdigest File.read(__FILE__)
18
+ end
19
+
20
+ it "should rewrite filename path" do
21
+ expected_path = File.expand_path(File.join(@dir, "#{@base}-fp-#{@digest}#{@ext}"))
22
+
23
+ pr = PathRewriter.new do |pr|
24
+ pr.fingerprinter = Fingerprinter::Digest.new
25
+ pr.pattern = PathRewriter::Format::Filename
26
+ end
27
+
28
+ pr.call(@path).should eql(expected_path)
29
+ end
30
+
31
+ it "should rewrite queryname path" do
32
+ expected_path = "#{__FILE__}?#{@digest}"
33
+
34
+ pr = PathRewriter.new do |pr|
35
+ pr.fingerprinter = Fingerprinter::Digest.new
36
+ pr.pattern = PathRewriter::Format::QueryString
37
+ end
38
+
39
+ pr.call(@path).should eql(expected_path)
40
+ end
41
+ end
@@ -0,0 +1,5 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'asset_fingerprinter'
4
+
5
+ include AssetFingerprinter
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asset_fingerprinter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Steel Fu, Brad Gessler
@@ -31,10 +31,15 @@ extra_rdoc_files: []
31
31
  files:
32
32
  - .gitignore
33
33
  - Gemfile
34
+ - Guardfile
34
35
  - Rakefile
35
36
  - asset_fingerprinter.gemspec
36
37
  - lib/asset_fingerprinter.rb
38
+ - lib/asset_fingerprinter/fingerprinter.rb
39
+ - lib/asset_fingerprinter/path_rewriter.rb
37
40
  - lib/asset_fingerprinter/version.rb
41
+ - spec/asset_fingerprinter_spec.rb
42
+ - spec/spec_helper.rb
38
43
  has_rdoc: true
39
44
  homepage: http://www.polleverywhere.com/
40
45
  licenses: []
@@ -69,5 +74,6 @@ rubygems_version: 1.6.2
69
74
  signing_key:
70
75
  specification_version: 3
71
76
  summary: A Gem inspired by the Rails AssetFingerPrinter plugin
72
- test_files: []
73
-
77
+ test_files:
78
+ - spec/asset_fingerprinter_spec.rb
79
+ - spec/spec_helper.rb