rails-routes-js-utils 1.2.1 → 2.0.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/.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