sprockets-helpers 0.3.0 → 0.4.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.
data/Appraisals CHANGED
@@ -1,7 +1,19 @@
1
- appraise "sprockets-2.0" do
2
- gem "sprockets", "~> 2.0.0"
1
+ appraise 'sprockets-2.0' do
2
+ gem 'sprockets', '~> 2.0.0'
3
3
  end
4
4
 
5
- appraise "sprockets-2.1" do
6
- gem "sprockets", "~> 2.1.0"
5
+ appraise 'sprockets-2.1' do
6
+ gem 'sprockets', '~> 2.1.0'
7
+ end
8
+
9
+ appraise 'sprockets-2.2' do
10
+ gem 'sprockets', '~> 2.2.0'
11
+ end
12
+
13
+ appraise 'sprockets-2.3' do
14
+ gem 'sprockets', '~> 2.3.0'
15
+ end
16
+
17
+ appraise 'sprockets-2.4' do
18
+ gem 'sprockets', '~> 2.4.0'
7
19
  end
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source 'http://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in sprockets-helpers.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -27,20 +27,20 @@ Setup
27
27
  Let's build a simple Sinatra app using Sprockets and Sprockets::Helpers (See my fork of [sinatra-asset-pipeline](https://github.com/petebrowne/sinatra-asset-pipeline) for complete setup):
28
28
 
29
29
  ``` ruby
30
- require "sinatra/base"
31
- require "sprockets"
32
- require "sprockets-helpers"
30
+ require 'sinatra/base'
31
+ require 'sprockets'
32
+ require 'sprockets-helpers'
33
33
 
34
34
  class App < Sinatra::Base
35
35
  set :sprockets, Sprockets::Environment.new(root)
36
- set :assets_prefix, "/assets"
36
+ set :assets_prefix, '/assets'
37
37
  set :digest_assets, false
38
38
 
39
39
  configure do
40
40
  # Setup Sprockets
41
- sprockets.append_path File.join(root, "assets", "stylesheets")
42
- sprockets.append_path File.join(root, "assets", "javascripts")
43
- sprockets.append_path File.join(root, "assets", "images")
41
+ sprockets.append_path File.join(root, 'assets', 'stylesheets')
42
+ sprockets.append_path File.join(root, 'assets', 'javascripts')
43
+ sprockets.append_path File.join(root, 'assets', 'images')
44
44
 
45
45
  # Configure Sprockets::Helpers (if necessary)
46
46
  Sprockets::Helpers.configure do |config|
@@ -61,7 +61,7 @@ class App < Sinatra::Base
61
61
  # end
62
62
  end
63
63
 
64
- get "/" do
64
+ get '/' do
65
65
  erb :index
66
66
  end
67
67
  end
@@ -74,13 +74,13 @@ Usage in Assets
74
74
  Simply requiring sprockets-helpers will add the asset path helpers to the Sprocket context, making them available within any asset. For example, a file `assets/javascripts/paths.js.erb`:
75
75
 
76
76
  ``` js+erb
77
- var Paths = { railsImage: "<%= image_path "rails.png" %>" };
77
+ var Paths = { railsImage: "<%= image_path 'rails.png' %>" };
78
78
  ```
79
79
 
80
80
  Would be transformed into:
81
81
 
82
82
  ``` javascript
83
- var Paths = { railsImage: "/assets/rails.png" };
83
+ var Paths = { railsImage: '/assets/rails.png' };
84
84
  ```
85
85
 
86
86
 
@@ -97,11 +97,11 @@ Now the following index file:
97
97
  <head>
98
98
  <meta charset="utf-8">
99
99
  <title>Sinatra with Sprockets 2 (Asset Pipeline)</title>
100
- <link rel="stylesheet" href="<%= stylesheet_path "application" %>">
101
- <script src="<%= javascript_path "application" %>"></script>
100
+ <link rel="stylesheet" href="<%= stylesheet_path 'application' %>">
101
+ <script src="<%= javascript_path 'application' %>"></script>
102
102
  </head>
103
103
  <body>
104
- <img src="<%= image_path "rails.png" %>">
104
+ <img src="<%= image_path 'rails.png' %>">
105
105
  </body>
106
106
  </html>
107
107
  ```
@@ -132,13 +132,31 @@ If the source is not an asset in the Sprockets environment, Sprockets::Helpers w
132
132
  Given an image, `public/images/logo.jpg`:
133
133
 
134
134
  ``` html+erb
135
- <img src="<%= image_path "logo.jpg" %>">
135
+ <img src="<%= image_path 'logo.jpg' %>">
136
136
  ```
137
137
 
138
138
  Would become:
139
139
 
140
140
  ``` html
141
- <img src="/images/logo.jpg?1320093919">
141
+ <img src='/images/logo.jpg?1320093919'>
142
+ ```
143
+
144
+
145
+ Manifest Usage
146
+ --------------
147
+
148
+ **New in 0.4**: Sprockets::Helpers will use the latest fingerprinted filename directly from a `manifest.json` file:
149
+
150
+
151
+ ``` ruby
152
+ # ...
153
+ Sprockets::Helpers.configure do |config|
154
+ config.environment = sprockets
155
+ config.manifest = Sprockets::Manifest.new(sprockets, 'path/to/manifset.json')
156
+ config.prefix = assets_prefix
157
+ config.public_path = public_folder
158
+ end
159
+ # ...
142
160
  ```
143
161
 
144
162
 
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "appraisal"
2
- require "bundler/gem_tasks"
3
- require "rspec/core/rake_task"
1
+ require 'appraisal'
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
4
 
5
5
  RSpec::Core::RakeTask.new
6
6
  task :default => :spec
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sprockets", "~> 2.2.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sprockets", "~> 2.3.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sprockets", "~> 2.4.0"
6
+
7
+ gemspec :path=>"../"
@@ -1 +1 @@
1
- require "sprockets/helpers"
1
+ require 'sprockets/helpers'
@@ -1,10 +1,11 @@
1
- require "sprockets/helpers/version"
2
- require "sprockets"
1
+ require 'sprockets/helpers/version'
2
+ require 'sprockets'
3
3
 
4
4
  module Sprockets
5
5
  module Helpers
6
- autoload :AssetPath, "sprockets/helpers/asset_path"
7
- autoload :FilePath, "sprockets/helpers/file_path"
6
+ autoload :AssetPath, 'sprockets/helpers/asset_path'
7
+ autoload :FilePath, 'sprockets/helpers/file_path'
8
+ autoload :ManifestPath, 'sprockets/helpers/manifest_path'
8
9
 
9
10
  # Pattern for checking if a given path is an external URI.
10
11
  URI_MATCH = %r(^[-a-z]+://|^cid:|^//)
@@ -16,19 +17,22 @@ module Sprockets
16
17
  # Set the Sprockets environment to search for assets.
17
18
  # This defaults to the context's #environment method.
18
19
  attr_accessor :environment
19
-
20
+
21
+ # The manifest file used for lookup
22
+ attr_accessor :manifest
23
+
20
24
  # The base URL the Sprocket environment is mapped to.
21
- # This defaults to "/assets".
25
+ # This defaults to '/assets'.
22
26
  def prefix
23
- @prefix ||= "/assets"
27
+ @prefix ||= '/assets'
24
28
  end
25
29
  attr_writer :prefix
26
30
 
27
31
  # The path to the public directory, where the assets
28
32
  # not managed by Sprockets will be located.
29
- # Defaults to "./public"
33
+ # Defaults to './public'
30
34
  def public_path
31
- @public_path ||= "./public"
35
+ @public_path ||= './public'
32
36
  end
33
37
  attr_writer :public_path
34
38
 
@@ -53,19 +57,19 @@ module Sprockets
53
57
  #
54
58
  # For files within Sprockets:
55
59
  #
56
- # asset_path "xmlhr.js" # => "/assets/xmlhr.js"
57
- # asset_path "xmlhr", :ext => "js" # => "/assets/xmlhr.js"
58
- # asset_path "xmlhr.js", :digest => true # => "/assets/xmlhr-27a8f1f96afd8d4c67a59eb9447f45bd.js"
59
- # asset_path "xmlhr.js", :prefix => "/themes" # => "/themes/xmlhr.js"
60
+ # asset_path 'xmlhr.js' # => '/assets/xmlhr.js'
61
+ # asset_path 'xmlhr', :ext => 'js' # => '/assets/xmlhr.js'
62
+ # asset_path 'xmlhr.js', :digest => true # => '/assets/xmlhr-27a8f1f96afd8d4c67a59eb9447f45bd.js'
63
+ # asset_path 'xmlhr.js', :prefix => '/themes' # => '/themes/xmlhr.js'
60
64
  #
61
65
  # For files outside of Sprockets:
62
66
  #
63
- # asset_path "xmlhr" # => "/xmlhr"
64
- # asset_path "xmlhr", :ext => "js" # => "/xmlhr.js"
65
- # asset_path "dir/xmlhr.js", :dir => "javascripts" # => "/javascripts/dir/xmlhr.js"
66
- # asset_path "/dir/xmlhr.js", :dir => "javascripts" # => "/dir/xmlhr.js"
67
- # asset_path "http://www.example.com/js/xmlhr" # => "http://www.example.com/js/xmlhr"
68
- # asset_path "http://www.example.com/js/xmlhr.js" # => "http://www.example.com/js/xmlhr.js"
67
+ # asset_path 'xmlhr' # => '/xmlhr'
68
+ # asset_path 'xmlhr', :ext => 'js' # => '/xmlhr.js'
69
+ # asset_path 'dir/xmlhr.js', :dir => 'javascripts' # => '/javascripts/dir/xmlhr.js'
70
+ # asset_path '/dir/xmlhr.js', :dir => 'javascripts' # => '/dir/xmlhr.js'
71
+ # asset_path 'http://www.example.com/js/xmlhr' # => 'http://www.example.com/js/xmlhr'
72
+ # asset_path 'http://www.example.com/js/xmlhr.js' # => 'http://www.example.com/js/xmlhr.js'
69
73
  #
70
74
  def asset_path(source, options = {})
71
75
  return source if source =~ URI_MATCH
@@ -75,6 +79,11 @@ module Sprockets
75
79
  source << ".#{options[:ext]}"
76
80
  end
77
81
 
82
+ # If a manifest is present, try to grab the path from the manifest first
83
+ if Helpers.manifest && Helpers.manifest.assets[source]
84
+ return ManifestPath.new(Helpers.manifest.assets[source], options).to_s
85
+ end
86
+
78
87
  # If the source points to an asset in the Sprockets
79
88
  # environment use AssetPath to generate the full path.
80
89
  assets_environment.resolve(source) do |path|
@@ -94,20 +103,20 @@ module Sprockets
94
103
  #
95
104
  # For files within Sprockets:
96
105
  #
97
- # javascript_path "xmlhr" # => "/assets/xmlhr.js"
98
- # javascript_path "dir/xmlhr.js" # => "/assets/dir/xmlhr.js"
99
- # javascript_path "/dir/xmlhr" # => "/assets/dir/xmlhr.js"
106
+ # javascript_path 'xmlhr' # => '/assets/xmlhr.js'
107
+ # javascript_path 'dir/xmlhr.js' # => '/assets/dir/xmlhr.js'
108
+ # javascript_path '/dir/xmlhr' # => '/assets/dir/xmlhr.js'
100
109
  #
101
110
  # For files outside of Sprockets:
102
111
  #
103
- # javascript_path "xmlhr" # => "/javascripts/xmlhr.js"
104
- # javascript_path "dir/xmlhr.js" # => "/javascripts/dir/xmlhr.js"
105
- # javascript_path "/dir/xmlhr" # => "/dir/xmlhr.js"
106
- # javascript_path "http://www.example.com/js/xmlhr" # => "http://www.example.com/js/xmlhr"
107
- # javascript_path "http://www.example.com/js/xmlhr.js" # => "http://www.example.com/js/xmlhr.js"
112
+ # javascript_path 'xmlhr' # => '/javascripts/xmlhr.js'
113
+ # javascript_path 'dir/xmlhr.js' # => '/javascripts/dir/xmlhr.js'
114
+ # javascript_path '/dir/xmlhr' # => '/dir/xmlhr.js'
115
+ # javascript_path 'http://www.example.com/js/xmlhr' # => 'http://www.example.com/js/xmlhr'
116
+ # javascript_path 'http://www.example.com/js/xmlhr.js' # => 'http://www.example.com/js/xmlhr.js'
108
117
  #
109
118
  def javascript_path(source, options = {})
110
- asset_path source, { :dir => "javascripts", :ext => "js" }.merge(options)
119
+ asset_path source, { :dir => 'javascripts', :ext => 'js' }.merge(options)
111
120
  end
112
121
  alias_method :path_to_javascript, :javascript_path
113
122
 
@@ -119,20 +128,20 @@ module Sprockets
119
128
  #
120
129
  # For files within Sprockets:
121
130
  #
122
- # stylesheet_path "style" # => "/assets/style.css"
123
- # stylesheet_path "dir/style.css" # => "/assets/dir/style.css"
124
- # stylesheet_path "/dir/style.css" # => "/assets/dir/style.css"
131
+ # stylesheet_path 'style' # => '/assets/style.css'
132
+ # stylesheet_path 'dir/style.css' # => '/assets/dir/style.css'
133
+ # stylesheet_path '/dir/style.css' # => '/assets/dir/style.css'
125
134
  #
126
135
  # For files outside of Sprockets:
127
136
  #
128
- # stylesheet_path "style" # => "/stylesheets/style.css"
129
- # stylesheet_path "dir/style.css" # => "/stylesheets/dir/style.css"
130
- # stylesheet_path "/dir/style.css" # => "/dir/style.css"
131
- # stylesheet_path "http://www.example.com/css/style" # => "http://www.example.com/css/style"
132
- # stylesheet_path "http://www.example.com/css/style.css" # => "http://www.example.com/css/style.css"
137
+ # stylesheet_path 'style' # => '/stylesheets/style.css'
138
+ # stylesheet_path 'dir/style.css' # => '/stylesheets/dir/style.css'
139
+ # stylesheet_path '/dir/style.css' # => '/dir/style.css'
140
+ # stylesheet_path 'http://www.example.com/css/style' # => 'http://www.example.com/css/style'
141
+ # stylesheet_path 'http://www.example.com/css/style.css' # => 'http://www.example.com/css/style.css'
133
142
  #
134
143
  def stylesheet_path(source, options = {})
135
- asset_path source, { :dir => "stylesheets", :ext => "css" }.merge(options)
144
+ asset_path source, { :dir => 'stylesheets', :ext => 'css' }.merge(options)
136
145
  end
137
146
  alias_method :path_to_stylesheet, :stylesheet_path
138
147
 
@@ -143,20 +152,20 @@ module Sprockets
143
152
  #
144
153
  # With files within Sprockets:
145
154
  #
146
- # image_path "edit.png" # => "/assets/edit.png"
147
- # image_path "icons/edit.png" # => "/assets/icons/edit.png"
148
- # image_path "/icons/edit.png" # => "/assets/icons/edit.png"
155
+ # image_path 'edit.png' # => '/assets/edit.png'
156
+ # image_path 'icons/edit.png' # => '/assets/icons/edit.png'
157
+ # image_path '/icons/edit.png' # => '/assets/icons/edit.png'
149
158
  #
150
159
  # With files outside of Sprockets:
151
160
  #
152
- # image_path "edit" # => "/images/edit"
153
- # image_path "edit.png" # => "/images/edit.png"
154
- # image_path "icons/edit.png" # => "/images/icons/edit.png"
155
- # image_path "/icons/edit.png" # => "/icons/edit.png"
156
- # image_path "http://www.example.com/img/edit.png" # => "http://www.example.com/img/edit.png"
161
+ # image_path 'edit' # => '/images/edit'
162
+ # image_path 'edit.png' # => '/images/edit.png'
163
+ # image_path 'icons/edit.png' # => '/images/icons/edit.png'
164
+ # image_path '/icons/edit.png' # => '/icons/edit.png'
165
+ # image_path 'http://www.example.com/img/edit.png' # => 'http://www.example.com/img/edit.png'
157
166
  #
158
167
  def image_path(source, options = {})
159
- asset_path source, { :dir => "images" }.merge(options)
168
+ asset_path source, { :dir => 'images' }.merge(options)
160
169
  end
161
170
  alias_method :path_to_image, :image_path
162
171
 
@@ -16,8 +16,7 @@ module Sprockets
16
16
 
17
17
  protected
18
18
 
19
- # Prepends the base path if the path is not
20
- # already an absolute path.
19
+ # Prepends the assets prefix
21
20
  def rewrite_base_path(path) # :nodoc:
22
21
  prefix = if options[:prefix].respond_to? :call
23
22
  options[:prefix].call path
@@ -35,7 +35,7 @@ module Sprockets
35
35
  # already an absolute path.
36
36
  def rewrite_base_path(path) # :nodoc:
37
37
  if path !~ %r(^/)
38
- File.join("/", dir, path)
38
+ File.join('/', dir, path)
39
39
  else
40
40
  path
41
41
  end
@@ -0,0 +1,17 @@
1
+ module Sprockets
2
+ module Helpers
3
+ # `ManifestPath` uses the digest path and
4
+ # prepends the prefix.
5
+ class ManifestPath < AssetPath
6
+ #
7
+ def initialize(path, options = {})
8
+ @options = {
9
+ :body => false,
10
+ :prefix => Helpers.prefix
11
+ }.merge options
12
+
13
+ @source = path.to_s
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  module Sprockets
2
2
  module Helpers
3
- VERSION = "0.3.0"
3
+ VERSION = '0.4.0'
4
4
  end
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
- require "sprockets"
2
- require "sprockets-helpers"
3
- require "construct"
4
- require "pathname"
1
+ require 'sprockets'
2
+ require 'sprockets-helpers'
3
+ require 'construct'
4
+ require 'pathname'
5
5
 
6
6
  # Requires supporting files with custom matchers and macros, etc,
7
7
  # in ./support/ and its subdirectories.
@@ -11,16 +11,16 @@ RSpec.configure do |config|
11
11
  config.include Construct::Helpers
12
12
 
13
13
  # Returns a Sprockets environment. Automatically
14
- # appends the "assets" path if available.
14
+ # appends the 'assets' path if available.
15
15
  def env
16
16
  @env ||= Sprockets::Environment.new.tap do |env|
17
- env.append_path "assets" if File.directory?("assets")
17
+ env.append_path 'assets' if File.directory?('assets')
18
18
  end
19
19
  end
20
20
 
21
21
  # Returns a fresh context, that can be used to test helpers.
22
- def context(logical_path = "application.js", pathname = nil)
23
- pathname ||= Pathname.new(File.join("assets", logical_path)).expand_path
22
+ def context(logical_path = 'application.js', pathname = nil)
23
+ pathname ||= Pathname.new(File.join('assets', logical_path)).expand_path
24
24
  env.context_class.new env, logical_path, pathname
25
25
  end
26
26
  end
@@ -1,199 +1,225 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe Sprockets::Helpers do
4
- describe ".configure" do
5
- it "sets global configuration" do
4
+ describe '.configure' do
5
+ it 'sets global configuration' do
6
6
  within_construct do |c|
7
- c.file "assets/main.css"
7
+ c.file 'assets/main.css'
8
8
 
9
- context.asset_path("main.css").should == "/assets/main.css"
9
+ context.asset_path('main.css').should == '/assets/main.css'
10
10
  Sprockets::Helpers.configure do |config|
11
11
  config.digest = true
12
- config.prefix = "/themes"
12
+ config.prefix = '/themes'
13
13
  end
14
- context.asset_path("main.css").should =~ %r(/themes/main-[0-9a-f]+.css)
14
+ context.asset_path('main.css').should =~ %r(/themes/main-[0-9a-f]+.css)
15
15
  Sprockets::Helpers.digest = nil
16
16
  Sprockets::Helpers.prefix = nil
17
17
  end
18
18
  end
19
19
  end
20
20
 
21
- describe ".digest" do
22
- it "globally configures digest paths" do
21
+ describe '.digest' do
22
+ it 'globally configures digest paths' do
23
23
  within_construct do |c|
24
- c.file "assets/main.js"
24
+ c.file 'assets/main.js'
25
25
 
26
- context.asset_path("main", :ext => "js").should == "/assets/main.js"
26
+ context.asset_path('main', :ext => 'js').should == '/assets/main.js'
27
27
  Sprockets::Helpers.digest = true
28
- context.asset_path("main", :ext => "js").should =~ %r(/assets/main-[0-9a-f]+.js)
28
+ context.asset_path('main', :ext => 'js').should =~ %r(/assets/main-[0-9a-f]+.js)
29
29
  Sprockets::Helpers.digest = nil
30
30
  end
31
31
  end
32
32
  end
33
33
 
34
- describe ".environment" do
35
- it "sets a custom assets environment" do
34
+ describe '.environment' do
35
+ it 'sets a custom assets environment' do
36
36
  within_construct do |c|
37
- c.file "themes/main.css"
37
+ c.file 'themes/main.css'
38
38
 
39
39
  custom_env = Sprockets::Environment.new
40
- custom_env.append_path "themes"
40
+ custom_env.append_path 'themes'
41
41
  Sprockets::Helpers.environment = custom_env
42
- context.asset_path("main.css").should == "/assets/main.css"
42
+ context.asset_path('main.css').should == '/assets/main.css'
43
43
  Sprockets::Helpers.environment = nil
44
44
  end
45
45
  end
46
46
  end
47
47
 
48
- describe ".prefix" do
49
- context "that is a string" do
50
- it "sets a custom assets prefix" do
48
+ describe '.prefix' do
49
+ context 'that is a string' do
50
+ it 'sets a custom assets prefix' do
51
51
  within_construct do |c|
52
- c.file "assets/logo.jpg"
52
+ c.file 'assets/logo.jpg'
53
53
 
54
- context.asset_path("logo.jpg").should == "/assets/logo.jpg"
55
- Sprockets::Helpers.prefix = "/images"
56
- context.asset_path("logo.jpg").should == "/images/logo.jpg"
54
+ context.asset_path('logo.jpg').should == '/assets/logo.jpg'
55
+ Sprockets::Helpers.prefix = '/images'
56
+ context.asset_path('logo.jpg').should == '/images/logo.jpg'
57
57
  Sprockets::Helpers.prefix = nil
58
58
  end
59
59
  end
60
60
  end
61
61
 
62
- context "that is a proc" do
63
- it "sets a custom assets prefix" do
62
+ context 'that is a proc' do
63
+ it 'sets a custom assets prefix' do
64
64
  within_construct do |c|
65
- c.file "assets/logo.jpg"
65
+ c.file 'assets/logo.jpg'
66
66
 
67
67
  Sprockets::Helpers.prefix = Proc.new { |source| "http://example.com/#{File.basename(source, '.jpg')}" }
68
- context.asset_path("logo.jpg").should == "http://example.com/logo/logo.jpg"
68
+ context.asset_path('logo.jpg').should == 'http://example.com/logo/logo.jpg'
69
69
  Sprockets::Helpers.prefix = nil
70
70
  end
71
71
  end
72
72
  end
73
73
  end
74
74
 
75
- describe ".public_path" do
76
- it "sets a custom location for the public path" do
75
+ describe '.public_path' do
76
+ it 'sets a custom location for the public path' do
77
77
  within_construct do |c|
78
- c.file "output/main.js"
78
+ c.file 'output/main.js'
79
79
 
80
- context.asset_path("main.js").should == "/main.js"
81
- Sprockets::Helpers.public_path = "./output"
82
- context.asset_path("main.js").should =~ %r(/main.js\?\d+)
80
+ context.asset_path('main.js').should == '/main.js'
81
+ Sprockets::Helpers.public_path = './output'
82
+ context.asset_path('main.js').should =~ %r(/main.js\?\d+)
83
83
  Sprockets::Helpers.public_path = nil
84
84
  end
85
85
  end
86
86
  end
87
-
88
- describe "#asset_path" do
89
- context "with URIs" do
90
- it "returns URIs untouched" do
91
- context.asset_path("https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js").should ==
92
- "https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"
93
- context.asset_path("http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js").should ==
94
- "http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"
95
- context.asset_path("//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js").should ==
96
- "//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"
87
+
88
+ describe '#asset_path' do
89
+ context 'with URIs' do
90
+ it 'returns URIs untouched' do
91
+ context.asset_path('https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js').should ==
92
+ 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'
93
+ context.asset_path('http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js').should ==
94
+ 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'
95
+ context.asset_path('//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js').should ==
96
+ '//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'
97
97
  end
98
98
  end
99
99
 
100
- context "with regular files" do
101
- it "returns absolute paths" do
102
- context.asset_path("/path/to/file.js").should == "/path/to/file.js"
103
- context.asset_path("/path/to/file.jpg").should == "/path/to/file.jpg"
100
+ context 'with regular files' do
101
+ it 'returns absolute paths' do
102
+ context.asset_path('/path/to/file.js').should == '/path/to/file.js'
103
+ context.asset_path('/path/to/file.jpg').should == '/path/to/file.jpg'
104
104
  end
105
105
 
106
- it "appends the extension for javascripts and stylesheets" do
107
- context.asset_path("/path/to/file", :ext => "js").should == "/path/to/file.js"
108
- context.asset_path("/path/to/file", :ext => "css").should == "/path/to/file.css"
106
+ it 'appends the extension for javascripts and stylesheets' do
107
+ context.asset_path('/path/to/file', :ext => 'js').should == '/path/to/file.js'
108
+ context.asset_path('/path/to/file', :ext => 'css').should == '/path/to/file.css'
109
109
  end
110
110
 
111
- it "prepends a base dir" do
112
- context.asset_path("main", :dir => "stylesheets", :ext => "css").should == "/stylesheets/main.css"
113
- context.asset_path("main", :dir => "javascripts", :ext => "js").should == "/javascripts/main.js"
114
- context.asset_path("logo.jpg", :dir => "images").should == "/images/logo.jpg"
111
+ it 'prepends a base dir' do
112
+ context.asset_path('main', :dir => 'stylesheets', :ext => 'css').should == '/stylesheets/main.css'
113
+ context.asset_path('main', :dir => 'javascripts', :ext => 'js').should == '/javascripts/main.js'
114
+ context.asset_path('logo.jpg', :dir => 'images').should == '/images/logo.jpg'
115
115
  end
116
116
 
117
- it "appends a timestamp if the file exists in the output path" do
117
+ it 'appends a timestamp if the file exists in the output path' do
118
118
  within_construct do |c|
119
- c.file "public/main.js"
120
- c.file "public/favicon.ico"
119
+ c.file 'public/main.js'
120
+ c.file 'public/favicon.ico'
121
121
 
122
- context.asset_path("main", :ext => "js").should =~ %r(/main.js\?\d+)
123
- context.asset_path("/favicon.ico").should =~ %r(/favicon.ico\?\d+)
122
+ context.asset_path('main', :ext => 'js').should =~ %r(/main.js\?\d+)
123
+ context.asset_path('/favicon.ico').should =~ %r(/favicon.ico\?\d+)
124
124
  end
125
125
  end
126
126
  end
127
127
 
128
- context "with assets" do
129
- it "returns URLs to the assets" do
128
+ context 'with assets' do
129
+ it 'returns URLs to the assets' do
130
130
  within_construct do |c|
131
- c.file "assets/logo.jpg"
132
- c.file "assets/main.js"
133
- c.file "assets/main.css"
131
+ c.file 'assets/logo.jpg'
132
+ c.file 'assets/main.js'
133
+ c.file 'assets/main.css'
134
134
 
135
- context.asset_path("main", :ext => "css").should == "/assets/main.css"
136
- context.asset_path("main", :ext => "js").should == "/assets/main.js"
137
- context.asset_path("logo.jpg").should == "/assets/logo.jpg"
135
+ context.asset_path('main', :ext => 'css').should == '/assets/main.css'
136
+ context.asset_path('main', :ext => 'js').should == '/assets/main.js'
137
+ context.asset_path('logo.jpg').should == '/assets/logo.jpg'
138
138
  end
139
139
  end
140
140
 
141
- it "prepends the assets prefix" do
141
+ it 'prepends the assets prefix' do
142
142
  within_construct do |c|
143
- c.file "assets/logo.jpg"
143
+ c.file 'assets/logo.jpg'
144
144
 
145
- context.asset_path("logo.jpg").should == "/assets/logo.jpg"
146
- context.asset_path("logo.jpg", :prefix => "/images").should == "/images/logo.jpg"
145
+ context.asset_path('logo.jpg').should == '/assets/logo.jpg'
146
+ context.asset_path('logo.jpg', :prefix => '/images').should == '/images/logo.jpg'
147
147
  end
148
148
  end
149
149
 
150
- it "uses the digest path if configured" do
150
+ it 'uses the digest path if configured' do
151
151
  within_construct do |c|
152
- c.file "assets/main.js"
152
+ c.file 'assets/main.js'
153
153
 
154
- context.asset_path("main", :ext => "js").should == "/assets/main.js"
155
- context.asset_path("main", :ext => "js", :digest => true).should =~ %r(/assets/main-[0-9a-f]+.js)
154
+ context.asset_path('main', :ext => 'js').should == '/assets/main.js'
155
+ context.asset_path('main', :ext => 'js', :digest => true).should =~ %r(/assets/main-[0-9a-f]+.js)
156
156
  end
157
157
  end
158
158
 
159
- it "returns a body parameter" do
159
+ it 'returns a body parameter' do
160
160
  within_construct do |c|
161
- c.file "assets/main.js"
161
+ c.file 'assets/main.js'
162
162
 
163
- context.asset_path("main", :ext => "js", :body => true).should == "/assets/main.js?body=1"
163
+ context.asset_path('main', :ext => 'js', :body => true).should == '/assets/main.js?body=1'
164
+ end
165
+ end
166
+ end
167
+
168
+ if defined?(::Sprockets::Manifest)
169
+ context 'with a manifest' do
170
+ it 'reads path from a manifest file' do
171
+ within_construct do |c|
172
+ asset_file = c.file 'assets/application.js'
173
+ manifest_file = c.join 'manifest.json'
174
+
175
+ manifest = Sprockets::Manifest.new(env, manifest_file)
176
+ manifest.compile 'application.js'
177
+
178
+ Sprockets::Helpers.configure do |config|
179
+ config.digest = true
180
+ config.prefix = '/assets'
181
+ config.manifest = Sprockets::Manifest.new(env, manifest_file)
182
+ end
183
+
184
+ asset_file.delete
185
+ context.asset_path('application.js').should =~ %r(/assets/application-[0-9a-f]+.js)
186
+
187
+ Sprockets::Helpers.digest = nil
188
+ Sprockets::Helpers.prefix = nil
189
+ end
164
190
  end
165
191
  end
166
192
  end
167
193
  end
168
194
 
169
- describe "#javascript_path" do
170
- context "with regular files" do
171
- it "appends the js extension" do
172
- context.javascript_path("/path/to/file").should == "/path/to/file.js"
195
+ describe '#javascript_path' do
196
+ context 'with regular files' do
197
+ it 'appends the js extension' do
198
+ context.javascript_path('/path/to/file').should == '/path/to/file.js'
173
199
  end
174
200
 
175
- it "prepends the javascripts dir" do
176
- context.javascript_path("main").should == "/javascripts/main.js"
201
+ it 'prepends the javascripts dir' do
202
+ context.javascript_path('main').should == '/javascripts/main.js'
177
203
  end
178
204
  end
179
205
  end
180
206
 
181
- describe "#stylesheet_path" do
182
- context "with regular files" do
183
- it "appends the css extension" do
184
- context.stylesheet_path("/path/to/file").should == "/path/to/file.css"
207
+ describe '#stylesheet_path' do
208
+ context 'with regular files' do
209
+ it 'appends the css extension' do
210
+ context.stylesheet_path('/path/to/file').should == '/path/to/file.css'
185
211
  end
186
212
 
187
- it "prepends the stylesheets dir" do
188
- context.stylesheet_path("main").should == "/stylesheets/main.css"
213
+ it 'prepends the stylesheets dir' do
214
+ context.stylesheet_path('main').should == '/stylesheets/main.css'
189
215
  end
190
216
  end
191
217
  end
192
218
 
193
- describe "#image_path" do
194
- context "with regular files" do
195
- it "prepends the images dir" do
196
- context.image_path("logo.jpg").should == "/images/logo.jpg"
219
+ describe '#image_path' do
220
+ context 'with regular files' do
221
+ it 'prepends the images dir' do
222
+ context.image_path('logo.jpg').should == '/images/logo.jpg'
197
223
  end
198
224
  end
199
225
  end
@@ -1,26 +1,26 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "sprockets/helpers/version"
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'sprockets/helpers/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "sprockets-helpers"
6
+ s.name = 'sprockets-helpers'
7
7
  s.version = Sprockets::Helpers::VERSION
8
- s.authors = ["Pete Browne"]
9
- s.email = ["me@petebrowne.com"]
10
- s.homepage = "https://github.com/petebrowne/sprockets-sass"
11
- s.summary = "Asset path helpers for Sprockets 2.0 applications"
12
- s.description = "Asset path helpers for Sprockets 2.0 applications"
8
+ s.authors = ['Pete Browne']
9
+ s.email = ['me@petebrowne.com']
10
+ s.homepage = 'https://github.com/petebrowne/sprockets-helpers'
11
+ s.summary = 'Asset path helpers for Sprockets 2.x applications'
12
+ s.description = 'Asset path helpers for Sprockets 2.x applications'
13
13
 
14
- s.rubyforge_project = "sprockets-helpers"
14
+ s.rubyforge_project = 'sprockets-helpers'
15
15
 
16
16
  s.files = `git ls-files`.split("\n")
17
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
- s.require_paths = ["lib"]
18
+ s.executables = `git ls-files -- bin/*`.split('\n').map{ |f| File.basename(f) }
19
+ s.require_paths = ['lib']
20
20
 
21
- s.add_dependency "sprockets", "~> 2.0"
22
- s.add_development_dependency "appraisal", "~> 0.4"
23
- s.add_development_dependency "rspec", "~> 2.6"
24
- s.add_development_dependency "test-construct", "~> 1.2"
25
- s.add_development_dependency "rake"
21
+ s.add_dependency 'sprockets', '~> 2.0'
22
+ s.add_development_dependency 'appraisal', '~> 0.4'
23
+ s.add_development_dependency 'rspec', '~> 2.6'
24
+ s.add_development_dependency 'test-construct', '~> 1.2'
25
+ s.add_development_dependency 'rake'
26
26
  end
metadata CHANGED
@@ -1,106 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sprockets-helpers
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 0
10
- version: 0.3.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Pete Browne
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-02-23 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :runtime
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ~>
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 2
30
- - 0
31
- version: "2.0"
32
- prerelease: false
12
+ date: 2012-04-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
33
15
  name: sprockets
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- type: :development
37
- requirement: &id002 !ruby/object:Gem::Requirement
16
+ requirement: &70151392212820 !ruby/object:Gem::Requirement
38
17
  none: false
39
- requirements:
18
+ requirements:
40
19
  - - ~>
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- - 4
46
- version: "0.4"
20
+ - !ruby/object:Gem::Version
21
+ version: '2.0'
22
+ type: :runtime
47
23
  prerelease: false
24
+ version_requirements: *70151392212820
25
+ - !ruby/object:Gem::Dependency
48
26
  name: appraisal
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- type: :development
52
- requirement: &id003 !ruby/object:Gem::Requirement
27
+ requirement: &70151392211980 !ruby/object:Gem::Requirement
53
28
  none: false
54
- requirements:
29
+ requirements:
55
30
  - - ~>
56
- - !ruby/object:Gem::Version
57
- hash: 15
58
- segments:
59
- - 2
60
- - 6
61
- version: "2.6"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.4'
33
+ type: :development
62
34
  prerelease: false
35
+ version_requirements: *70151392211980
36
+ - !ruby/object:Gem::Dependency
63
37
  name: rspec
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- type: :development
67
- requirement: &id004 !ruby/object:Gem::Requirement
38
+ requirement: &70151392210640 !ruby/object:Gem::Requirement
68
39
  none: false
69
- requirements:
40
+ requirements:
70
41
  - - ~>
71
- - !ruby/object:Gem::Version
72
- hash: 11
73
- segments:
74
- - 1
75
- - 2
76
- version: "1.2"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.6'
44
+ type: :development
77
45
  prerelease: false
46
+ version_requirements: *70151392210640
47
+ - !ruby/object:Gem::Dependency
78
48
  name: test-construct
79
- version_requirements: *id004
80
- - !ruby/object:Gem::Dependency
81
- type: :development
82
- requirement: &id005 !ruby/object:Gem::Requirement
49
+ requirement: &70151392209760 !ruby/object:Gem::Requirement
83
50
  none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- hash: 3
88
- segments:
89
- - 0
90
- version: "0"
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.2'
55
+ type: :development
91
56
  prerelease: false
57
+ version_requirements: *70151392209760
58
+ - !ruby/object:Gem::Dependency
92
59
  name: rake
93
- version_requirements: *id005
94
- description: Asset path helpers for Sprockets 2.0 applications
95
- email:
60
+ requirement: &70151392208960 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70151392208960
69
+ description: Asset path helpers for Sprockets 2.x applications
70
+ email:
96
71
  - me@petebrowne.com
97
72
  executables: []
98
-
99
73
  extensions: []
100
-
101
74
  extra_rdoc_files: []
102
-
103
- files:
75
+ files:
104
76
  - .gitignore
105
77
  - Appraisals
106
78
  - Gemfile
@@ -109,47 +81,48 @@ files:
109
81
  - Rakefile
110
82
  - gemfiles/sprockets-2.0.gemfile
111
83
  - gemfiles/sprockets-2.1.gemfile
84
+ - gemfiles/sprockets-2.2.gemfile
85
+ - gemfiles/sprockets-2.3.gemfile
86
+ - gemfiles/sprockets-2.4.gemfile
112
87
  - lib/sprockets-helpers.rb
113
88
  - lib/sprockets/helpers.rb
114
89
  - lib/sprockets/helpers/asset_path.rb
115
90
  - lib/sprockets/helpers/file_path.rb
91
+ - lib/sprockets/helpers/manifest_path.rb
116
92
  - lib/sprockets/helpers/version.rb
117
93
  - spec/spec_helper.rb
118
94
  - spec/sprockets-helpers_spec.rb
119
95
  - sprockets-helpers.gemspec
120
- homepage: https://github.com/petebrowne/sprockets-sass
96
+ homepage: https://github.com/petebrowne/sprockets-helpers
121
97
  licenses: []
122
-
123
98
  post_install_message:
124
99
  rdoc_options: []
125
-
126
- require_paths:
100
+ require_paths:
127
101
  - lib
128
- required_ruby_version: !ruby/object:Gem::Requirement
102
+ required_ruby_version: !ruby/object:Gem::Requirement
129
103
  none: false
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- hash: 3
134
- segments:
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ segments:
135
109
  - 0
136
- version: "0"
137
- required_rubygems_version: !ruby/object:Gem::Requirement
110
+ hash: -2985089145650135547
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
112
  none: false
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- hash: 3
143
- segments:
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ segments:
144
118
  - 0
145
- version: "0"
119
+ hash: -2985089145650135547
146
120
  requirements: []
147
-
148
121
  rubyforge_project: sprockets-helpers
149
122
  rubygems_version: 1.8.11
150
123
  signing_key:
151
124
  specification_version: 3
152
- summary: Asset path helpers for Sprockets 2.0 applications
153
- test_files:
125
+ summary: Asset path helpers for Sprockets 2.x applications
126
+ test_files:
154
127
  - spec/spec_helper.rb
155
128
  - spec/sprockets-helpers_spec.rb