asset_pipeline_routes 0.1.1 → 0.2.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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +39 -36
  3. data/lib/asset_pipeline_routes/path.rb +3 -2
  4. data/lib/asset_pipeline_routes/path_processor.rb +30 -0
  5. data/lib/asset_pipeline_routes/railtie.rb +1 -5
  6. data/lib/asset_pipeline_routes/routes.rb +1 -5
  7. data/lib/asset_pipeline_routes/version.rb +1 -1
  8. data/lib/asset_pipeline_routes.rb +8 -7
  9. data/spec/asset_pipeline_routes_spec.rb +18 -50
  10. data/spec/fixtures/argument_function.js +1 -0
  11. data/spec/fixtures/false_positive.js +1 -0
  12. data/spec/fixtures/function_argument.js +1 -0
  13. data/spec/fixtures/nested_routes.js +1 -0
  14. data/spec/fixtures/simple_coffee_route.js.coffee +1 -0
  15. data/spec/fixtures/simple_route.js +1 -0
  16. data/spec/fixtures/simple_route_with_variable.js +2 -0
  17. data/spec/fixtures/unknown_route.js +1 -0
  18. data/spec/fixtures/unqualified_routes.js +1 -0
  19. data/spec/path_processor_spec.rb +63 -0
  20. data/spec/path_spec.rb +1 -1
  21. data/spec/spec_helper.rb +2 -0
  22. metadata +73 -71
  23. data/lib/asset_pipeline_routes/js_function_helper.rb +0 -27
  24. data/lib/asset_pipeline_routes/routes_context.rb +0 -8
  25. data/spec/reports/SPEC-AssetPipelineRoutes-Path-after-applying-formats-default-replacements.xml +0 -9
  26. data/spec/reports/SPEC-AssetPipelineRoutes-Path-after-applying-formats-number-of-replacements.xml +0 -9
  27. data/spec/reports/SPEC-AssetPipelineRoutes-Path-after-applying-formats-replacements.xml +0 -11
  28. data/spec/reports/SPEC-AssetPipelineRoutes-Path-after-applying-formats.xml +0 -7
  29. data/spec/reports/SPEC-AssetPipelineRoutes-Path-apply-format.xml +0 -11
  30. data/spec/reports/SPEC-AssetPipelineRoutes-Path-format.xml +0 -11
  31. data/spec/reports/SPEC-AssetPipelineRoutes-Path.xml +0 -7
  32. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-javascript-method-generation.xml +0 -13
  33. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-nested-routes-project-ticket-path.xml +0 -9
  34. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-nested-routes-with-format.xml +0 -11
  35. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-nested-routes.xml +0 -17
  36. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-edit-edit-user-path.xml +0 -9
  37. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-edit-with-format.xml +0 -11
  38. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-edit.xml +0 -11
  39. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-index-users-path.xml +0 -9
  40. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-index-with-format.xml +0 -9
  41. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-index.xml +0 -11
  42. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-show-user-path.xml +0 -9
  43. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-show-with-format.xml +0 -11
  44. data/spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-show.xml +0 -11
  45. data/spec/reports/SPEC-AssetPipelineRoutes-Routes.xml +0 -7
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1e0aeb2674f4d71a276bdcddb8d548fd28170850
4
+ data.tar.gz: 1ab2d6146ded1c488fb782630eabc8c50430c360
5
+ SHA512:
6
+ metadata.gz: 27200138ee83a6b432f4a8b32ac451227a9eac0ed609966f8d7f237e3a23f9e3f18af7449003e34483631071a08c75c9f6b40f5c3caf1d605bc08244319b8a15
7
+ data.tar.gz: 9eed93d8a24d642b349935912f194581d2c5daffa2a98a2dff19c2cf28fbe4dbc1776a76fb1c8091d48e4939a754ee4e1f1abf949629e0143784f7ae64bd2d75
data/README.md CHANGED
@@ -1,57 +1,60 @@
1
1
  # asset\_pipeline\_routes
2
2
 
3
- Getting your Rails routes into the Rails 3.2 asset pipeline is really easy. Just
4
- `include Rails.application.routes.url_helpers` and you have all your routes available.
3
+ [![Build Status](https://travis-ci.org/nicolai86/asset_pipeline_routes.png?branch=master)](https://travis-ci.org/nicolai86/asset_pipeline_routes)
5
4
 
6
- But except for hard-coded links this won't help you, because in production you have to pass in resource parameters at compile-time, where they are not available.
5
+ `asset_pipeline_routes` defines a `r` shorthand function which you can use inside your javascript assets.
7
6
 
8
- Heh, you might think! Just call a route helper and pass in a dynamic parameter mapping, like
9
- `user_path('{{id}}')`. Sadly this won't yield the desired result! Instead of `/users/{{id}}`, you'll be presented with `/users/%7B%7Bid%7D%7D` because you're mapping just got html_escaped!
7
+ ## What it does
10
8
 
11
- This is where asset\_pipeline\_routes comes to the rescue!
9
+ Assuming you got a `routes.rb` with:
12
10
 
13
- # What it does
11
+ ``` ruby
12
+ resources :users # => yields multiple routes, e.g. /users/:id(.:format)
13
+ ```
14
14
 
15
- It adds a helper object to your asset-pipeline called `r`. Using
16
- `r` you can access all your routes you'd normally do, except that all those path fragments
17
- can be changed to whatever you need them to.
15
+ Inside your javascript assets you can now write:
18
16
 
19
- Here's an example, assuming you got a routes.rb with
17
+ ``` javascript
18
+ r(users_path) // => yields '/users'
19
+ r(user_path) // => yields '/users/{{id}}'
20
+ r(user_path, userId) // => yields '/users/'+userId
21
+ ```
20
22
 
21
- resources :users # => yields multiple routes, e.g. /users/:id(.:format)
23
+ It works with coffeescript as well:
22
24
 
23
- in it. Then, in you're javascript file you'd call `r.users_path`. All path fragments are replaced with Mustache-style attribute bindings by default:
25
+ ``` coffeescript
26
+ promise = $.rails.ajax({
27
+ url: r(user_path, userId)
28
+ })
29
+ ```
24
30
 
25
- # application.js.coffee.erb
26
- userPath = '<%= r.user_path %>' # => yields /users/{{id}}
27
- usersPath = '<%= r.users_path %>' # => yields /users
31
+ If you are compiling client side templates with the rails asset pipeline this works inside templates as well, e.g.
28
32
 
29
- You can even hook up member- or collection routes, whatever you like really. Just prefix your routes with `r.` and you can directly use them in your asset-pipeline!
33
+ ``` hamlbars
34
+ %form{ action: r(user_path) }
35
+ ```
36
+ will generate
37
+ ``` html
38
+ <form action='/users/{{id}}'></form>
39
+ ```
30
40
 
31
- All `_path`-methods take an arbitrary argument which is used to evaluate the final route.
32
- So if you want a regexp matching all users-show actions, you can do it just like this:
41
+ ## Upgrading Notes
33
42
 
34
- # application.js.coffee.erb
35
- usersPath = '<%= r.user_path '\d+' %>' # => yields /users/\d+
43
+ *v0.2* introduced code breaking changes!
44
+ **THIS WILL NO LONGER WORK**
36
45
 
37
- Sometimes you want to generate the URL for a given resource on the client-side entirely. That's possible as well:
46
+ ``` erb
47
+ // inside application.js.erb
48
+ var url = '<%= r.user_path 42 %>';
49
+ ```
38
50
 
39
- # application.js.erb
40
- var editUserRoute = <%= r.edit_user_path_method %>; // => yields anonymous function in js
41
- var editUserPath = editUserRoute(42); // => yields '/users/42/edit'
51
+ Instead, you can now drop the `.erb` extension and use r inline:
42
52
 
43
- # or, if you prefer CoffeeScript:
44
- # application.js.coffee.erb
45
- editUserPath = <%= r.edit_user_path_method(:coffee) %>
46
- editUserPath = editUserRoute(42) # => yields '/users/42/edit'
47
-
48
- Now you have total control over your Rails routes.
49
-
50
- # Addendum
51
-
52
- If you happen to use haml\_assets to be able to use HAML in your asset pipeline, you could easily create forms to be used in Backbone.js or similar - because you can add an url option which correctly binds to your context!
53
+ ``` javascript
54
+ var url = r(user_path, 42);
55
+ ```
53
56
 
54
57
  # License
55
- Copyright © 2011 Raphael Randschau <nicolai86@me.com>
58
+ Copyright © 2011-2013 Raphael Randschau <nicolai86@me.com>
56
59
 
57
60
  asset\_pipeline\_routes is distributed under an MIT-style license. See LICENSE for details.
@@ -23,9 +23,10 @@ module AssetPipelineRoutes
23
23
 
24
24
  def build *args
25
25
  apply_format args.extract_options!
26
- replacements(*args).inject(@route) { |route, param|
26
+ clean = replacements(*args).inject(@route) { |route, param|
27
27
  route.sub(/:(\w+)/, param.to_s)
28
28
  }
29
+ return "'#{clean}'"
29
30
  end
30
31
 
31
32
  def format options
@@ -40,7 +41,7 @@ module AssetPipelineRoutes
40
41
 
41
42
  def replacements *args
42
43
  defaults = default_replacements
43
- defaults[0...args.length] = args
44
+ defaults[0...args.length] = args.map { |item| (item != DEFAULT_REPLACEMENT) ? "'+#{item}+'" : item }
44
45
  defaults
45
46
  end
46
47
 
@@ -0,0 +1,30 @@
1
+ # encoding: UTF-8
2
+ require 'sprockets/processor'
3
+ require 'active_support/core_ext/object/blank'
4
+ module AssetPipelineRoutes
5
+ class PathProcessor < ::Sprockets::Processor
6
+ def r
7
+ @r ||= Routes.new(Rails.application.routes.routes)
8
+ end
9
+ def r= new_r
10
+ @r = new_r
11
+ end
12
+
13
+ def evaluate context, locals
14
+ data.gsub /[^[[:word:]]]r\(([[:word:]]+),?(.*)\)/ do |match|
15
+ parts = $2.split(',').map(&:strip).reject(&:blank?)
16
+ route = $1.to_sym
17
+
18
+ wrap = (match[0] == '(')
19
+
20
+ expanded = if r.respond_to? route
21
+ r.send route, *parts
22
+ else
23
+ "''"
24
+ end
25
+
26
+ wrap ? "(#{expanded})" : expanded
27
+ end
28
+ end
29
+ end
30
+ end
@@ -3,11 +3,7 @@ module AssetPipelineRoutes
3
3
  class Railtie < ::Rails::Railtie
4
4
  initializer "asset_pipeline_routes.environment" do |app|
5
5
  ActiveSupport.on_load(:action_view) do
6
- include ::AssetPipelineRoutes::RoutesContext
7
-
8
- app.assets.context_class.instance_eval do
9
- include ::AssetPipelineRoutes::RoutesContext
10
- end
6
+ app.assets.register_preprocessor('application/javascript', PathProcessor)
11
7
  end
12
8
  end
13
9
  end
@@ -1,5 +1,6 @@
1
1
  # encoding: UTF-8
2
2
  require "active_support/core_ext/array/extract_options"
3
+ require 'active_support/core_ext/string/inflections'
3
4
 
4
5
  module AssetPipelineRoutes
5
6
  class Routes
@@ -16,11 +17,6 @@ module AssetPipelineRoutes
16
17
  def define_route route
17
18
  self.class.instance_eval do
18
19
  define_method :"#{route.name}_path", Path.proc_for_route(route)
19
-
20
- define_method :"#{route.name}_path_method" do |style = :js|
21
- path = Path.new(route.path.ast.to_s)
22
- JsFunctionHelper::route_to_anonymous_function(path.build(*Array.new(path.number_of_replacements, ':\1')), style)
23
- end
24
20
  end
25
21
  end
26
22
 
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module AssetPipelineRoutes
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
@@ -1,11 +1,12 @@
1
1
  # encoding: UTF-8
2
- require_relative "asset_pipeline_routes/version"
2
+ require "asset_pipeline_routes/version"
3
+ require "asset_pipeline_routes/path"
4
+ require "asset_pipeline_routes/routes"
5
+ require "asset_pipeline_routes/path_processor"
3
6
 
4
- module AssetPipelineRoutes
5
- autoload :Path, 'asset_pipeline_routes/path'
6
- autoload :Routes, 'asset_pipeline_routes/routes'
7
- autoload :JsFunctionHelper, 'asset_pipeline_routes/js_function_helper'
8
- autoload :RoutesContext, 'asset_pipeline_routes/routes_context'
7
+ if defined?(Rails)
8
+ require "asset_pipeline_routes/railtie"
9
9
  end
10
10
 
11
- require_relative "asset_pipeline_routes/railtie" if defined?(Rails)
11
+ module AssetPipelineRoutes
12
+ end
@@ -12,11 +12,11 @@ describe AssetPipelineRoutes::Routes do
12
12
  subject { AssetPipelineRoutes::Routes.new [@route] }
13
13
 
14
14
  it { should respond_to(:users_path) }
15
- its(:users_path) { should eql '/users'}
16
- it { subject.users_path('\d+').should eql('/users') }
15
+ its(:users_path) { should eql "'/users'"}
16
+ it { subject.users_path('42').should eql("'/users'") }
17
17
 
18
18
  describe "with format" do
19
- it { subject.users_path(format: 'json').should eql('/users.json') }
19
+ it { subject.users_path(format: 'json').should eql("'/users.json'") }
20
20
  end
21
21
  end
22
22
 
@@ -25,12 +25,12 @@ describe AssetPipelineRoutes::Routes do
25
25
  subject { AssetPipelineRoutes::Routes.new [@route] }
26
26
 
27
27
  it { should respond_to(:user_path) }
28
- its(:user_path) { should eql('/users/{{id}}') }
29
- it { subject.user_path('\d+').should eql('/users/\d+') }
28
+ its(:user_path) { should eql("'/users/{{id}}'") }
29
+ it { subject.user_path('42').should eql("'/users/'+42+''") }
30
30
 
31
31
  describe "with format" do
32
- it { subject.user_path('\d+', format: 'json').should eql('/users/\d+.json') }
33
- it { subject.user_path(42, format: 'xml').should eql('/users/42.xml') }
32
+ it { subject.user_path("'42'", format: 'json').should eql("'/users/'+'42'+'.json'") }
33
+ it { subject.user_path(42, format: 'xml').should eql("'/users/'+42+'.xml'") }
34
34
  end
35
35
  end
36
36
 
@@ -39,12 +39,12 @@ describe AssetPipelineRoutes::Routes do
39
39
  subject { AssetPipelineRoutes::Routes.new [@route] }
40
40
 
41
41
  it { should respond_to(:edit_user_path) }
42
- its(:edit_user_path) { should eql('/users/{{id}}/edit') }
43
- it { subject.edit_user_path('\d+').should eql('/users/\d+/edit') }
42
+ its(:edit_user_path) { should eql("'/users/{{id}}/edit'") }
43
+ it { subject.edit_user_path('42').should eql("'/users/'+42+'/edit'") }
44
44
 
45
45
  describe "with format" do
46
- it { subject.edit_user_path('\d+', format: 'json').should eql('/users/\d+/edit.json') }
47
- it { subject.edit_user_path(42, format: 'xml').should eql('/users/42/edit.xml') }
46
+ it { subject.edit_user_path('42', format: 'json').should eql("'/users/'+42+'/edit.json'") }
47
+ it { subject.edit_user_path(42, format: 'xml').should eql("'/users/'+42+'/edit.xml'") }
48
48
  end
49
49
  end
50
50
 
@@ -53,47 +53,15 @@ describe AssetPipelineRoutes::Routes do
53
53
  subject { AssetPipelineRoutes::Routes.new [@route] }
54
54
 
55
55
  it { should respond_to(:project_ticket_path) }
56
- its(:project_ticket_path) {should eql('/projects/{{project_id}}/tickets/{{id}}') }
57
- it { subject.project_ticket_path(1,'\d+').should eql('/projects/1/tickets/\d+') }
58
- it { subject.project_ticket_path('\d+',2).should eql('/projects/\d+/tickets/2') }
59
- it { subject.project_ticket_path(1,2).should eql('/projects/1/tickets/2') }
60
- it { subject.project_ticket_path(1,2,3).should eql('/projects/1/tickets/2') }
56
+ its(:project_ticket_path) {should eql("'/projects/{{project_id}}/tickets/{{id}}'") }
57
+ it { subject.project_ticket_path(1).should eql("'/projects/'+1+'/tickets/{{id}}'") }
58
+ it { subject.project_ticket_path('x',2).should eql("'/projects/'+x+'/tickets/'+2+''") }
59
+ it { subject.project_ticket_path(1,2).should eql("'/projects/'+1+'/tickets/'+2+''") }
60
+ it { subject.project_ticket_path(1,2,3).should eql("'/projects/'+1+'/tickets/'+2+''") }
61
61
 
62
62
  describe "with format" do
63
- it { subject.project_ticket_path("a","b",format: 'json').should eql('/projects/a/tickets/b.json') }
64
- it { subject.project_ticket_path("a", format: 'json').should eql('/projects/a/tickets/{{id}}.json') }
65
- end
66
- end
67
-
68
- describe 'javascript method generation' do
69
- before { @route = build_route 'user', '/users/:id/edit(.:format)' }
70
- subject { AssetPipelineRoutes::Routes.new [@route] }
71
-
72
- it { should respond_to(:user_path_method) }
73
-
74
- it "should generate JavaScript mapping method" do
75
- js_method = "(function() { return function (id) { return '/users/' + id + '/edit' }; }).call(this);"
76
- subject.edit_user_path_method.should eql(js_method)
77
- end
78
-
79
- it "should generate CoffeScript mapping method" do
80
- coffee_method = "(-> (id) -> '/users/' + id + '/edit')(this)"
81
- subject.edit_user_path_method(:coffee).should eql(coffee_method)
82
- end
83
-
84
- context 'nested routes' do
85
- before { @route = build_route 'project_ticket', '/projects/:project_id/tickets/:id(.:format)' }
86
- subject { AssetPipelineRoutes::Routes.new [@route] }
87
-
88
- it "should generate CoffeScript mapping method" do
89
- coffee_method = "(-> (projectId, id) -> '/projects/' + projectId + '/tickets/' + id)(this)"
90
- subject.project_ticket_path_method(:coffee).should eql(coffee_method)
91
- end
92
-
93
- it "should generate JavaScript mapping method" do
94
- js_method = "(function() { return function (projectId, id) { return '/projects/' + projectId + '/tickets/' + id }; }).call(this);"
95
- subject.project_ticket_path_method.should eql(js_method)
96
- end
63
+ it { subject.project_ticket_path("a","b",format: 'json').should eql("'/projects/'+a+'/tickets/'+b+'.json'") }
64
+ it { subject.project_ticket_path("a", format: 'json').should eql("'/projects/'+a+'/tickets/{{id}}.json'") }
97
65
  end
98
66
  end
99
67
  end
@@ -0,0 +1 @@
1
+ var url = r(user_path, fetchUserId());
@@ -0,0 +1 @@
1
+ var x = receiver(y);
@@ -0,0 +1 @@
1
+ var url = receiver(r(users_path));
@@ -0,0 +1 @@
1
+ var project_path = r(project_ticket_path, 2);
@@ -0,0 +1 @@
1
+ Bar = r(users_path);
@@ -0,0 +1 @@
1
+ var Bar = r(users_path);
@@ -0,0 +1,2 @@
1
+ var x = 2;
2
+ var Bar = r(user_path, x);
@@ -0,0 +1 @@
1
+ var Bar = r(foo_path);
@@ -0,0 +1 @@
1
+ var url = r(user_path);
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+ require 'sprockets'
3
+
4
+ def build_route name, path
5
+ OpenStruct.new({:name => name, :path => OpenStruct.new(:ast => path)})
6
+ end
7
+
8
+ module Rails
9
+ def self.application
10
+ return OpenStruct.new({
11
+ routes: OpenStruct.new({
12
+ routes: [
13
+ build_route('users', '/users(.:format)'),
14
+ build_route('user', '/users/:id(.:format)'),
15
+ build_route('project_ticket', '/projects/:project_id/tickets/:id(.:format)')]
16
+ })
17
+ })
18
+ end
19
+ end
20
+
21
+ describe AssetPipelineRoutes::PathProcessor do
22
+ before do
23
+ @env = Sprockets::Environment.new(".")
24
+ @env.append_path(FIXTURE_ROOT)
25
+ @env.register_preprocessor('application/javascript', ::AssetPipelineRoutes::PathProcessor)
26
+ end
27
+
28
+ it "replaces calls to r() with route" do
29
+ @env['simple_route.js'].to_s.should == "var Bar ='/users';\n"
30
+ end
31
+
32
+ it "replaces calls with unknown route to ''" do
33
+ @env['unknown_route.js'].to_s.should == "var Bar ='';\n"
34
+ end
35
+
36
+ it "works with variables" do
37
+ @env['simple_route_with_variable.js'].to_s.should == "var x = 2;\nvar Bar ='/users/'+x+'';\n"
38
+ end
39
+
40
+ it "works with coffeescript" do
41
+ @env['simple_coffee_route.js'].to_s.should == "(function() {\n var Bar;\n\n Bar = '/users';\n\n}).call(this);\n"
42
+ end
43
+
44
+ it "works with unqualified routes" do
45
+ @env['unqualified_routes.js'].to_s.should == "var url ='/users/{{id}}';\n"
46
+ end
47
+
48
+ it "works with partially qualified nested routes" do
49
+ @env['nested_routes.js'].to_s.should == "var project_path ='/projects/'+2+'/tickets/{{id}}';\n"
50
+ end
51
+
52
+ it "does not replace false positives" do
53
+ @env['false_positive.js'].to_s.should == "var x = receiver(y);\n";
54
+ end
55
+
56
+ it "works as function argument" do
57
+ @env["function_argument.js"].to_s.should == "var url = receiver('/users');\n"
58
+ end
59
+
60
+ it "works with function argument" do
61
+ @env["argument_function.js"].to_s.should == "var url ='/users/'+fetchUserId()+'';\n"
62
+ end
63
+ end
data/spec/path_spec.rb CHANGED
@@ -26,7 +26,7 @@ describe AssetPipelineRoutes::Path do
26
26
 
27
27
  describe 'replacements' do
28
28
  it { subject.replacements().should eql subject.default_replacements }
29
- it { subject.replacements(1).should eql [1] }
29
+ it { subject.replacements(1).should eql ["'+1+'"] }
30
30
  end
31
31
  end
32
32
  end
data/spec/spec_helper.rb CHANGED
@@ -9,6 +9,8 @@ end
9
9
 
10
10
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
11
11
 
12
+ FIXTURE_ROOT = File.expand_path(File.join(File.dirname(__FILE__), "fixtures"))
13
+
12
14
  require 'asset_pipeline_routes'
13
15
  require 'rspec'
14
16
  require 'ostruct'
metadata CHANGED
@@ -1,112 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asset_pipeline_routes
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.1
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Raphael Randschau
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-28 00:00:00.000000000 Z
11
+ date: 2013-05-01 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.0
20
- none: false
21
- name: rails
19
+ version: 3.2.13
22
20
  type: :development
23
21
  prerelease: false
24
- requirement: !ruby/object:Gem::Requirement
22
+ version_requirements: !ruby/object:Gem::Requirement
25
23
  requirements:
26
24
  - - ~>
27
25
  - !ruby/object:Gem::Version
28
- version: 3.2.0
29
- none: false
26
+ version: 3.2.13
30
27
  - !ruby/object:Gem::Dependency
31
- version_requirements: !ruby/object:Gem::Requirement
28
+ name: sprockets
29
+ requirement: !ruby/object:Gem::Requirement
32
30
  requirements:
33
- - - ! '>='
31
+ - - '>='
34
32
  - !ruby/object:Gem::Version
35
33
  version: '0'
36
- none: false
37
- name: activesupport
38
34
  type: :development
39
35
  prerelease: false
40
- requirement: !ruby/object:Gem::Requirement
36
+ version_requirements: !ruby/object:Gem::Requirement
41
37
  requirements:
42
- - - ! '>='
38
+ - - '>='
43
39
  - !ruby/object:Gem::Version
44
40
  version: '0'
45
- none: false
46
41
  - !ruby/object:Gem::Dependency
47
- version_requirements: !ruby/object:Gem::Requirement
42
+ name: coffee-script
43
+ requirement: !ruby/object:Gem::Requirement
48
44
  requirements:
49
- - - ! '>='
45
+ - - '>='
50
46
  - !ruby/object:Gem::Version
51
47
  version: '0'
52
- none: false
53
- name: rspec
54
48
  type: :development
55
49
  prerelease: false
56
- requirement: !ruby/object:Gem::Requirement
50
+ version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
- - - ! '>='
52
+ - - '>='
59
53
  - !ruby/object:Gem::Version
60
54
  version: '0'
61
- none: false
62
55
  - !ruby/object:Gem::Dependency
63
- version_requirements: !ruby/object:Gem::Requirement
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
64
58
  requirements:
65
- - - ! '>='
59
+ - - '>='
66
60
  - !ruby/object:Gem::Version
67
61
  version: '0'
68
- none: false
69
- name: ci_reporter
70
62
  type: :development
71
63
  prerelease: false
72
- requirement: !ruby/object:Gem::Requirement
64
+ version_requirements: !ruby/object:Gem::Requirement
73
65
  requirements:
74
- - - ! '>='
66
+ - - '>='
75
67
  - !ruby/object:Gem::Version
76
68
  version: '0'
77
- none: false
78
69
  - !ruby/object:Gem::Dependency
79
- version_requirements: !ruby/object:Gem::Requirement
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
80
72
  requirements:
81
- - - ! '>='
73
+ - - '>='
82
74
  - !ruby/object:Gem::Version
83
75
  version: '0'
84
- none: false
85
- name: simplecov
86
76
  type: :development
87
77
  prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: ci_reporter
88
85
  requirement: !ruby/object:Gem::Requirement
89
86
  requirements:
90
- - - ! '>='
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
91
95
  - !ruby/object:Gem::Version
92
96
  version: '0'
93
- none: false
94
97
  - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
95
106
  version_requirements: !ruby/object:Gem::Requirement
96
107
  requirements:
97
- - - ! '>='
108
+ - - '>='
98
109
  - !ruby/object:Gem::Version
99
110
  version: '0'
100
- none: false
111
+ - !ruby/object:Gem::Dependency
101
112
  name: simplecov-rcov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
102
118
  type: :development
103
119
  prerelease: false
104
- requirement: !ruby/object:Gem::Requirement
120
+ version_requirements: !ruby/object:Gem::Requirement
105
121
  requirements:
106
- - - ! '>='
122
+ - - '>='
107
123
  - !ruby/object:Gem::Version
108
124
  version: '0'
109
- none: false
110
125
  description: Add a routes helper for all asset pipeline needs
111
126
  email:
112
127
  - nicolai86@me.com
@@ -114,62 +129,49 @@ executables: []
114
129
  extensions: []
115
130
  extra_rdoc_files: []
116
131
  files:
117
- - lib/asset_pipeline_routes/js_function_helper.rb
118
132
  - lib/asset_pipeline_routes/path.rb
133
+ - lib/asset_pipeline_routes/path_processor.rb
119
134
  - lib/asset_pipeline_routes/railtie.rb
120
135
  - lib/asset_pipeline_routes/routes.rb
121
- - lib/asset_pipeline_routes/routes_context.rb
122
136
  - lib/asset_pipeline_routes/version.rb
123
137
  - lib/asset_pipeline_routes.rb
124
138
  - spec/asset_pipeline_routes_spec.rb
139
+ - spec/fixtures/argument_function.js
140
+ - spec/fixtures/false_positive.js
141
+ - spec/fixtures/function_argument.js
142
+ - spec/fixtures/nested_routes.js
143
+ - spec/fixtures/simple_coffee_route.js.coffee
144
+ - spec/fixtures/simple_route.js
145
+ - spec/fixtures/simple_route_with_variable.js
146
+ - spec/fixtures/unknown_route.js
147
+ - spec/fixtures/unqualified_routes.js
148
+ - spec/path_processor_spec.rb
125
149
  - spec/path_spec.rb
126
- - spec/reports/SPEC-AssetPipelineRoutes-Path-after-applying-formats-default-replacements.xml
127
- - spec/reports/SPEC-AssetPipelineRoutes-Path-after-applying-formats-number-of-replacements.xml
128
- - spec/reports/SPEC-AssetPipelineRoutes-Path-after-applying-formats-replacements.xml
129
- - spec/reports/SPEC-AssetPipelineRoutes-Path-after-applying-formats.xml
130
- - spec/reports/SPEC-AssetPipelineRoutes-Path-apply-format.xml
131
- - spec/reports/SPEC-AssetPipelineRoutes-Path-format.xml
132
- - spec/reports/SPEC-AssetPipelineRoutes-Path.xml
133
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-javascript-method-generation.xml
134
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-nested-routes-project-ticket-path.xml
135
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-nested-routes-with-format.xml
136
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-nested-routes.xml
137
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-edit-edit-user-path.xml
138
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-edit-with-format.xml
139
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-edit.xml
140
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-index-users-path.xml
141
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-index-with-format.xml
142
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-index.xml
143
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-show-user-path.xml
144
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-show-with-format.xml
145
- - spec/reports/SPEC-AssetPipelineRoutes-Routes-resources-show.xml
146
- - spec/reports/SPEC-AssetPipelineRoutes-Routes.xml
147
150
  - spec/spec_helper.rb
148
151
  - README.md
149
152
  - Rakefile
150
153
  homepage: ''
151
154
  licenses: []
155
+ metadata: {}
152
156
  post_install_message:
153
157
  rdoc_options: []
154
158
  require_paths:
155
159
  - lib
156
160
  required_ruby_version: !ruby/object:Gem::Requirement
157
161
  requirements:
158
- - - ! '>='
162
+ - - '>='
159
163
  - !ruby/object:Gem::Version
160
164
  version: '0'
161
- none: false
162
165
  required_rubygems_version: !ruby/object:Gem::Requirement
163
166
  requirements:
164
- - - ! '>='
167
+ - - '>='
165
168
  - !ruby/object:Gem::Version
166
169
  version: '0'
167
- none: false
168
170
  requirements: []
169
171
  rubyforge_project: asset_pipeline_routes
170
- rubygems_version: 1.8.23
172
+ rubygems_version: 2.0.0
171
173
  signing_key:
172
- specification_version: 3
174
+ specification_version: 4
173
175
  summary: Add a routes helper for all asset pipeline needs
174
176
  test_files: []
175
177
  has_rdoc:
@@ -1,27 +0,0 @@
1
- # encoding: UTF-8
2
- require 'active_support/core_ext/string/inflections'
3
-
4
- module AssetPipelineRoutes
5
- module JsFunctionHelper
6
- def self.route_to_anonymous_function route, style = :js
7
- function_arguments = route.scan(/:(\w+)/).flatten.map { |param|
8
- param.camelcase(:lower)
9
- }
10
- url_parts = route.split(/:\w+/).map{ |fragment| "'#{fragment}'" }
11
- function = if style == :js
12
- <<-JS
13
- (function() {
14
- return function (#{function_arguments.join ', '}) {
15
- return #{url_parts.zip(function_arguments).flatten.reject{ |part| part.nil? }.join(' + ')}
16
- };
17
- }).call(this);
18
- JS
19
- elsif style == :coffee
20
- <<-COFFEESCRIPT
21
- (-> (#{function_arguments.join ', '}) -> #{url_parts.zip(function_arguments).flatten.reject{ |part| part.nil? }.join(' + ')})(this)
22
- COFFEESCRIPT
23
- end
24
- function.gsub(/\s+/,' ').strip
25
- end
26
- end
27
- end
@@ -1,8 +0,0 @@
1
- # encoding: UTF-8
2
- module AssetPipelineRoutes
3
- module RoutesContext
4
- def r
5
- @r ||= Routes.new(Rails.application.routes.routes)
6
- end
7
- end
8
- end
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Path after applying formats default_replacements" tests="1" time="0.000606" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Path after applying formats default_replacements " time="0.000367">
4
- </testcase>
5
- <system-out>
6
- </system-out>
7
- <system-err>
8
- </system-err>
9
- </testsuite>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Path after applying formats number_of_replacements" tests="1" time="0.000399" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Path after applying formats number_of_replacements " time="0.00023">
4
- </testcase>
5
- <system-out>
6
- </system-out>
7
- <system-err>
8
- </system-err>
9
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Path after applying formats replacements" tests="2" time="0.001243" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Path after applying formats replacements " time="0.000469">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Path after applying formats replacements " time="0.000307">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Path after applying formats" tests="0" time="0.000104" failures="0" errors="0" skipped="0">
3
- <system-out>
4
- </system-out>
5
- <system-err>
6
- </system-err>
7
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Path apply_format" tests="2" time="0.00067" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Path apply_format " time="0.000267">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Path apply_format " time="0.000202">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Path format" tests="2" time="0.000805" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Path format " time="0.000283">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Path format " time="0.000254">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Path" tests="0" time="0.000188" failures="0" errors="0" skipped="0">
3
- <system-out>
4
- </system-out>
5
- <system-err>
6
- </system-err>
7
- </testsuite>
@@ -1,13 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes javascript method generation" tests="3" time="0.029629" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes javascript method generation " time="0.000316">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Routes javascript method generation should generate JavaScript mapping method" time="0.028323">
6
- </testcase>
7
- <testcase name="AssetPipelineRoutes::Routes javascript method generation should generate CoffeScript mapping method" time="0.000554">
8
- </testcase>
9
- <system-out>
10
- </system-out>
11
- <system-err>
12
- </system-err>
13
- </testsuite>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes nested routes project_ticket_path" tests="1" time="0.00053" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes nested routes project_ticket_path " time="0.000355">
4
- </testcase>
5
- <system-out>
6
- </system-out>
7
- <system-err>
8
- </system-err>
9
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes nested routes with format" tests="2" time="0.0013" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes nested routes with format " time="0.000323">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Routes nested routes with format " time="0.000648">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,17 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes nested routes" tests="5" time="0.001551" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes nested routes " time="0.000243">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Routes nested routes " time="0.000261">
6
- </testcase>
7
- <testcase name="AssetPipelineRoutes::Routes nested routes " time="0.000259">
8
- </testcase>
9
- <testcase name="AssetPipelineRoutes::Routes nested routes " time="0.000258">
10
- </testcase>
11
- <testcase name="AssetPipelineRoutes::Routes nested routes " time="0.000259">
12
- </testcase>
13
- <system-out>
14
- </system-out>
15
- <system-err>
16
- </system-err>
17
- </testsuite>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#edit edit_user_path" tests="1" time="0.000494" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#edit edit_user_path " time="0.000335">
4
- </testcase>
5
- <system-out>
6
- </system-out>
7
- <system-err>
8
- </system-err>
9
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#edit with format" tests="2" time="0.00074" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#edit with format " time="0.000281">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Routes resources#edit with format " time="0.000261">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#edit" tests="2" time="0.000665" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#edit " time="0.000232">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Routes resources#edit " time="0.000261">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#index users_path" tests="1" time="0.00125" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#index users_path " time="0.000874">
4
- </testcase>
5
- <system-out>
6
- </system-out>
7
- <system-err>
8
- </system-err>
9
- </testsuite>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#index with format" tests="1" time="0.000472" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#index with format " time="0.000277">
4
- </testcase>
5
- <system-out>
6
- </system-out>
7
- <system-err>
8
- </system-err>
9
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#index" tests="2" time="0.002326" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#index " time="0.001202">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Routes resources#index " time="0.000807">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#show user_path" tests="1" time="0.000475" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#show user_path " time="0.000305">
4
- </testcase>
5
- <system-out>
6
- </system-out>
7
- <system-err>
8
- </system-err>
9
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#show with format" tests="2" time="0.0008" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#show with format " time="0.000293">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Routes resources#show with format " time="0.000305">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes resources#show" tests="2" time="0.000723" failures="0" errors="0" skipped="0">
3
- <testcase name="AssetPipelineRoutes::Routes resources#show " time="0.000241">
4
- </testcase>
5
- <testcase name="AssetPipelineRoutes::Routes resources#show " time="0.000268">
6
- </testcase>
7
- <system-out>
8
- </system-out>
9
- <system-err>
10
- </system-err>
11
- </testsuite>
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testsuite name="AssetPipelineRoutes::Routes" tests="0" time="0.000121" failures="0" errors="0" skipped="0">
3
- <system-out>
4
- </system-out>
5
- <system-err>
6
- </system-err>
7
- </testsuite>