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
@@ -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.
|
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
|
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:
|
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-
|
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.
|
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
|