rails-routes-js-utils 1.2.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ spec/reports
16
16
  test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
+ *.iml
@@ -13,4 +13,4 @@ function addRouteToEnv(obj) {
13
13
  };
14
14
  window.AllRoutes.push(obj);
15
15
  }
16
- <%= Rails::Routes::Js::Utils.generate %>
16
+ <%= Rails::Routes::Js::Utils.generate_js %>
@@ -0,0 +1,2 @@
1
+ <% require "rails-routes-js-utils" %>
2
+ <%= Rails::Routes::Js::Utils.generate_plist %>
@@ -2,7 +2,7 @@ module Rails
2
2
  module Routes
3
3
  module Js
4
4
  module Utils
5
- VERSION = "1.2.1"
5
+ VERSION = "2.0.0"
6
6
  end
7
7
  end
8
8
  end
@@ -1,13 +1,15 @@
1
1
  require "rails-routes-js-utils/version"
2
2
  require "rails-routes-js-utils/engine"
3
3
  require "regex"
4
+ require 'plist'
5
+
4
6
  module Rails
5
7
  module Routes
6
8
  module Js
7
9
  module Utils
8
10
 
9
11
  #DFS Traversal
10
- def self.dig(current,js)
12
+ def self.dig(current,js = [])
11
13
 
12
14
  if (!current.respond_to? :left) || (current.class == Journey::Nodes::Symbol) || (current.class == Journey::Nodes::Group)
13
15
  #puts("#{current.class} #{current}")
@@ -28,12 +30,16 @@ module Rails
28
30
  dig(current.right,js)
29
31
  end
30
32
  end
33
+ js
34
+ end
35
+
36
+ def self.all_routes
37
+ ENV['CONTROLLER'] ? Rails.Application.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : Rails.application.routes
31
38
  end
32
39
 
33
- def self.generate
34
- all_routes = ENV['CONTROLLER'] ? Rails.Application.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : Rails.application.routes
40
+ def self.generate_js
35
41
  last_name = nil
36
- all_routes.routes.collect do |route|
42
+ self.all_routes.routes.collect do |route|
37
43
  compiled_regex = route.path.to_regexp.to_javascript
38
44
 
39
45
  #route.defaults contains action and controller name
@@ -45,23 +51,40 @@ module Rails
45
51
  subdomain_regex = route.constraints[:subdomain].to_javascript
46
52
  end
47
53
 
48
- js = [];
49
- dig(route.path.spec,js)
54
+ js = dig(route.path.spec)
50
55
  compiled_verb = route.verb.to_javascript
51
56
  if compiled_verb == '//'
52
57
  compiled_verb = '/.*/'
53
58
  end
59
+
54
60
  name = route.name
55
61
  if !name && last_name
56
62
  name = last_name
57
63
  end
64
+
58
65
  if name
59
66
  last_name = name
60
67
  "addRouteToEnv({name: '#{name}', path: #{compiled_regex}, subdomain: #{subdomain_regex} , reqs: #{reqs.to_json}, replace: function(opts) { return #{js.join('+')}; }, verb: #{compiled_verb} });"
61
68
  end
62
- end.join("\n");
69
+ end.join("\n")
70
+
63
71
  end
72
+ def self.generate_plist
73
+ parsedRoutes = {}
74
+ last_name = nil
75
+ self.all_routes.routes.collect do |route|
76
+ name = route.name
77
+ if !name && last_name
78
+ name = last_name
79
+ end
80
+ reqs = route.defaults.merge(parts: route.parts)
64
81
 
82
+ if name
83
+ parsedRoutes[name] = {path: route.path.to_regexp.to_javascript,subdomain: route.constraints[:subdomain] ? route.constraints[:subdomain].to_javascript: '',reqs: reqs, verb: route.verb.to_javascript,ast:route.ast.to_s}
84
+ end
85
+ end
86
+ parsedRoutes.to_plist
87
+ end
65
88
  end
66
89
  end
67
90
  end
@@ -13,6 +13,7 @@ Gem::Specification.new do |gem|
13
13
  gem.homepage = ""
14
14
 
15
15
  gem.add_development_dependency 'rails'
16
+ gem.add_dependency 'plist'
16
17
 
17
18
  gem.files = `git ls-files`.split($/)
18
19
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-routes-js-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-17 00:00:00.000000000 Z
12
+ date: 2013-04-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: plist
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  description: Make rails route available via window.Routes
31
47
  email:
32
48
  - me@duy.kr
@@ -40,6 +56,7 @@ files:
40
56
  - README.md
41
57
  - Rakefile
42
58
  - app/assets/javascripts/rails-routes-js-utils.js.erb
59
+ - app/assets/plist/rails-routes-js-utils.plist.erb
43
60
  - lib/rails-routes-js-utils.rb
44
61
  - lib/rails-routes-js-utils/engine.rb
45
62
  - lib/rails-routes-js-utils/version.rb
@@ -65,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
82
  version: '0'
66
83
  requirements: []
67
84
  rubyforge_project:
68
- rubygems_version: 1.8.24
85
+ rubygems_version: 1.8.25
69
86
  signing_key:
70
87
  specification_version: 3
71
88
  summary: Make rails route available via window.Routes