rails-routes-js-utils 1.0.2 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,14 @@
2
2
  window.Routes = {};
3
3
  window.AllRoutes = [];
4
4
  function addRouteToEnv(obj) {
5
- window.Routes[obj.name+'_path'] = obj.path;
5
+ window.Routes[obj.name+'_path'] = function(idOrObject){
6
+ if (typeof idOrObject == 'object')
7
+ return obj.replace(idOrObject);
8
+ return obj.replace({id: idOrObject});
9
+ };
6
10
  window.AllRoutes.push({path: obj.path,reqs: obj.reqs});
7
11
  }
12
+
13
+ addRouteToEnv({name: 'brand_root', path: /^\/$/ , reqs: {"controller":"brand/stores","action":"index","parts":[]}, replace: function(opts) { return '/'; }})
14
+
8
15
  <%= Rails::Routes::Js::Utils.generate %>
@@ -2,7 +2,7 @@ module Rails
2
2
  module Routes
3
3
  module Js
4
4
  module Utils
5
- VERSION = "1.0.2"
5
+ VERSION = "1.0.4"
6
6
  end
7
7
  end
8
8
  end
@@ -5,13 +5,41 @@ module Rails
5
5
  module Routes
6
6
  module Js
7
7
  module Utils
8
+
9
+ #DFS Traversal
10
+ def self.dig(current,js)
11
+
12
+ if (!current.respond_to? :left) || (current.class == Journey::Nodes::Symbol) || (current.class == Journey::Nodes::Group)
13
+ #puts("#{current.class} #{current}")
14
+ if (current.class == Journey::Nodes::Symbol)
15
+ #Required
16
+ js << "opts.#{current.to_s[1..-1]}"
17
+ else
18
+ if (current.class == Journey::Nodes::Group)
19
+ #js << current.to_s
20
+ else
21
+ #Literal
22
+ js << "'#{current.to_s}'"
23
+ end
24
+ end
25
+ else
26
+ dig(current.left,js)
27
+ if (current.respond_to? :right)
28
+ dig(current.right,js)
29
+ end
30
+ end
31
+ end
32
+
8
33
  def self.generate
9
34
  all_routes = ENV['CONTROLLER'] ? Rails.Application.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : IMuaSam::Application.routes
10
35
  all_routes.routes.collect do |route|
11
36
  compiled_regex = route.path.to_regexp.to_javascript
12
37
  reqs = route.defaults.merge(parts: route.parts)
38
+
39
+ js = [];
40
+ dig(route.path.spec,js)
13
41
  if route.name
14
- "addRouteToEnv({name: '#{route.name}', path: #{compiled_regex} , reqs: #{reqs.to_json}});"
42
+ "addRouteToEnv({name: '#{route.name}', path: #{compiled_regex} , reqs: #{reqs.to_json}, replace: function(opts) { return #{js.join('+')}; } });"
15
43
  end
16
44
  end.join("\n");
17
45
  end
data/lib/regex.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Regexp
2
2
  def to_javascript
3
- Regexp.new(inspect.sub('\\A','^').sub('\\Z','$').sub('\\z','$').sub(/^\//,'').sub(/\/[a-z]*$/,'').gsub(/\(\?#.+\)/, '').gsub(/\(\?-\w+:/,'('), self.options).inspect
3
+ Regexp.new(inspect.sub('\\A','^').sub('\\Z','$').sub('\\z','$').sub(/^\//,'').sub(/\/[a-z]*$/,'').gsub(/\(\?#.+\)/, '').gsub(/\(\?-\w+:/,'(').gsub(/\(\(\(([^()]*)\)\)\)/,"(?:(?:(\\1)))").gsub(/\(\(([^()]*)\)\)/,"(?:(\\1))"), self.options).inspect
4
4
  end
5
5
  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: 1.0.2
4
+ version: 1.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: