route_translator 4.4.1 → 5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -3
- data/README.md +6 -6
- data/lib/route_translator/extensions/action_controller.rb +4 -2
- data/lib/route_translator/extensions/mapper.rb +20 -16
- data/lib/route_translator/extensions/route_set.rb +8 -5
- data/lib/route_translator/translator.rb +11 -21
- data/lib/route_translator/translator/path/segment.rb +0 -2
- data/lib/route_translator/translator/route_helpers.rb +3 -15
- data/lib/route_translator/version.rb +1 -1
- metadata +34 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94d116b8b22e3189dfca53c189008da9fca4248b
|
4
|
+
data.tar.gz: 9009629caf2f295110ddf69e6bced39dfecf44f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 320cbcabb052d70e508b013e8c7c9624e1fff5e3d42ea31db10446f8f684a332af55f38ccecf671b380b0dc6dc1f06f9cb5731acca93068cfbd32930425ce10c
|
7
|
+
data.tar.gz: 2bf6d5b205e6a61864fcaf21bc8204570333c5e6f7ebd3ec03d53f327784e617ac9e05aebe40861d476eec203f8ce2f489250ff4a37d3d7a565bcdaf78c3744d
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# RouteTranslator
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/route_translator)
|
4
|
-
[](https://travis-ci.org/enriclluelles/route_translator)
|
5
5
|
[](https://gemnasium.com/enriclluelles/route_translator)
|
6
6
|
[](https://codeclimate.com/github/enriclluelles/route_translator)
|
7
|
-
[](https://coveralls.io/github/enriclluelles/route_translator?branch=master)
|
8
8
|
|
9
9
|
RouteTranslator is a gem to allow you to manage the translations of your app routes with a simple dictionary format.
|
10
10
|
|
11
11
|
It started as a fork of the awesome [translate_routes](https://github.com/raul/translate_routes) plugin by [Raúl Murciano](https://github.com/raul).
|
12
12
|
|
13
|
-
Right now it works with
|
13
|
+
Right now it works with Rails 5.0
|
14
14
|
|
15
15
|
|
16
16
|
|
@@ -19,7 +19,7 @@ Right now it works with all the different flavours of rails 3-4 (3.2, 4.0, 4.1,
|
|
19
19
|
1. If you have this `routes.rb` file originally:
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
|
22
|
+
Rails.application.routes.draw do
|
23
23
|
namespace :admin do
|
24
24
|
resources :cars
|
25
25
|
end
|
@@ -58,7 +58,7 @@ Right now it works with all the different flavours of rails 3-4 (3.2, 4.0, 4.1,
|
|
58
58
|
3. Wrap the groups of routes that you want to translate inside a `localized` block:
|
59
59
|
|
60
60
|
```ruby
|
61
|
-
|
61
|
+
Rails.application.routes.draw do
|
62
62
|
namespace :admin do
|
63
63
|
resources :cars
|
64
64
|
end
|
@@ -131,7 +131,7 @@ Right now it works with all the different flavours of rails 3-4 (3.2, 4.0, 4.1,
|
|
131
131
|
To disable it add this to your controller:
|
132
132
|
|
133
133
|
```ruby
|
134
|
-
|
134
|
+
skip_around_action :set_locale_from_url
|
135
135
|
```
|
136
136
|
|
137
137
|
|
@@ -46,5 +46,7 @@ module RouteTranslator
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
|
50
|
-
ActionController::
|
49
|
+
ActiveSupport.on_load(:action_controller) do
|
50
|
+
ActionController::Base.send :include, RouteTranslator::Controller
|
51
|
+
ActionController::TestCase.send :include, RouteTranslator::TestCase
|
52
|
+
end
|
@@ -10,31 +10,35 @@ module ActionDispatch
|
|
10
10
|
@localized = false
|
11
11
|
end
|
12
12
|
|
13
|
-
def add_route(action, options) # :nodoc:
|
14
|
-
path = path_for_action(action,
|
13
|
+
def add_route(action, controller, options, original_path, to, via, formatted, anchor, options_constraints) # :nodoc:
|
14
|
+
path = path_for_action(action, original_path)
|
15
|
+
raise ArgumentError, 'path is required' if path.blank?
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
action = action.to_s
|
18
|
+
|
19
|
+
default_action = options.delete(:action) || @scope[:action]
|
20
|
+
|
21
|
+
if action =~ %r{^[\w\-\/]+$}
|
22
|
+
default_action ||= action.tr('-', '_') unless action.include?('/')
|
18
23
|
else
|
19
24
|
action = nil
|
20
25
|
end
|
21
26
|
|
22
|
-
if !options.fetch(:as, true)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
+
as = if !options.fetch(:as, true) # if it's set to nil or false
|
28
|
+
options.delete(:as)
|
29
|
+
else
|
30
|
+
name_for_action(options.delete(:as), action)
|
31
|
+
end
|
27
32
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
+
path = Mapping.normalize_path URI.parser.escape(path), formatted
|
34
|
+
ast = Journey::Parser.parse path
|
35
|
+
|
36
|
+
mapping = Mapping.build(@scope, @set, ast, controller, default_action, to, via, formatted, options_constraints, anchor, options)
|
33
37
|
|
34
38
|
if @localized
|
35
|
-
@set.add_localized_route(
|
39
|
+
@set.add_localized_route(mapping, ast, as, anchor, @scope, path, controller, default_action, to, via, formatted, options_constraints, options)
|
36
40
|
else
|
37
|
-
@set.add_route(
|
41
|
+
@set.add_route(mapping, ast, as, anchor)
|
38
42
|
end
|
39
43
|
end
|
40
44
|
end
|
@@ -3,15 +3,18 @@ require 'action_dispatch'
|
|
3
3
|
module ActionDispatch
|
4
4
|
module Routing
|
5
5
|
class RouteSet
|
6
|
-
def add_localized_route(
|
7
|
-
RouteTranslator::Translator.translations_for(
|
8
|
-
|
6
|
+
def add_localized_route(mapping, path_ast, name, anchor, scope, path, controller, default_action, to, via, formatted, options_constraints, options)
|
7
|
+
RouteTranslator::Translator.translations_for(self, path, name, options_constraints, options) do |translated_name, translated_path, translated_options_constraints, translated_options|
|
8
|
+
translated_path_ast = ::ActionDispatch::Journey::Parser.parse(translated_path)
|
9
|
+
translated_mapping = ::ActionDispatch::Routing::Mapper::Mapping.build(scope, self, translated_path_ast, controller, default_action, to, via, formatted, translated_options_constraints, anchor, translated_options)
|
10
|
+
|
11
|
+
add_route translated_mapping, translated_path_ast, translated_name, anchor
|
9
12
|
end
|
10
13
|
|
11
14
|
if RouteTranslator.config.generate_unnamed_unlocalized_routes
|
12
|
-
add_route
|
15
|
+
add_route mapping, path_ast, nil, anchor
|
13
16
|
elsif RouteTranslator.config.generate_unlocalized_routes
|
14
|
-
add_route
|
17
|
+
add_route mapping, path_ast, name, anchor
|
15
18
|
end
|
16
19
|
end
|
17
20
|
end
|
@@ -31,40 +31,30 @@ module RouteTranslator
|
|
31
31
|
translated_name
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
35
|
-
def translate_conditions(conditions, translated_path)
|
36
|
-
translated_conditions = conditions.dup
|
37
|
-
|
38
|
-
translated_conditions[:path_info] = translated_path
|
39
|
-
translated_conditions[:parsed_path_info] = ActionDispatch::Journey::Parser.new.parse(translated_conditions[:path_info]) if conditions[:parsed_path_info]
|
40
|
-
|
41
|
-
if translated_conditions[:required_defaults] && !translated_conditions[:required_defaults].include?(RouteTranslator.locale_param_key)
|
42
|
-
translated_conditions[:required_defaults] << RouteTranslator.locale_param_key
|
43
|
-
end
|
44
|
-
|
45
|
-
translated_conditions
|
46
|
-
end
|
47
34
|
end
|
48
35
|
|
49
36
|
module_function
|
50
37
|
|
51
|
-
def translations_for(
|
52
|
-
RouteTranslator::Translator::RouteHelpers.add
|
38
|
+
def translations_for(route_set, path, name, options_constraints, options)
|
39
|
+
RouteTranslator::Translator::RouteHelpers.add name, route_set.named_routes
|
53
40
|
|
54
41
|
available_locales.each do |locale|
|
55
42
|
begin
|
56
|
-
translated_path = RouteTranslator::Translator::Path.translate(
|
43
|
+
translated_path = RouteTranslator::Translator::Path.translate(path, locale)
|
57
44
|
rescue I18n::MissingTranslationData => e
|
58
45
|
raise e unless RouteTranslator.config.disable_fallback
|
59
46
|
next
|
60
47
|
end
|
61
48
|
|
62
|
-
|
49
|
+
translated_options_constraints = options_constraints.dup
|
50
|
+
translated_options = options.dup
|
51
|
+
|
52
|
+
translated_options_constraints[RouteTranslator.locale_param_key] = locale.to_s
|
53
|
+
translated_options[RouteTranslator.locale_param_key] = locale.to_s.gsub('native_', '') unless translated_options.include?(RouteTranslator.locale_param_key)
|
54
|
+
|
55
|
+
translated_name = translate_name(name, locale, route_set.named_routes.names)
|
63
56
|
|
64
|
-
|
65
|
-
new_requirements = requirements.merge(RouteTranslator.locale_param_key => locale.to_s)
|
66
|
-
new_route_name = translate_name(route_name, locale, route_set.named_routes.routes)
|
67
|
-
yield app, new_conditions, new_requirements, new_defaults, new_route_name, anchor
|
57
|
+
yield translated_name, translated_path, translated_options_constraints, translated_options
|
68
58
|
end
|
69
59
|
end
|
70
60
|
|
@@ -20,22 +20,10 @@ module RouteTranslator
|
|
20
20
|
# I18n.locale = :fr
|
21
21
|
# people_path -> people_fr_path
|
22
22
|
def add(old_name, named_route_collection)
|
23
|
-
|
24
|
-
url_helpers_module = named_route_collection.url_helpers_module
|
25
|
-
path_helpers_module = named_route_collection.path_helpers_module
|
26
|
-
url_helpers_list = named_route_collection.helper_names
|
27
|
-
path_helpers_list = named_route_collection.helper_names
|
28
|
-
else
|
29
|
-
url_helpers_module = named_route_collection.module
|
30
|
-
path_helpers_module = named_route_collection.module
|
31
|
-
url_helpers_list = named_route_collection.helpers
|
32
|
-
path_helpers_list = named_route_collection.helpers
|
33
|
-
end
|
23
|
+
helper_list = named_route_collection.helper_names
|
34
24
|
|
35
|
-
|
36
|
-
|
37
|
-
['url', url_helpers_module, url_helpers_list]
|
38
|
-
].each do |suffix, helper_container, helper_list|
|
25
|
+
%w(path url).each do |suffix|
|
26
|
+
helper_container = named_route_collection.send(:"#{suffix}_helpers_module")
|
39
27
|
new_helper_name = "#{old_name}_#{suffix}"
|
40
28
|
|
41
29
|
helper_list.push(new_helper_name.to_sym) unless helper_list.include?(new_helper_name.to_sym)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: route_translator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geremia Taglialatela
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-07-
|
13
|
+
date: 2016-07-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -18,40 +18,40 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 5.0.0
|
22
22
|
- - "<"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '5.
|
24
|
+
version: '5.1'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
29
|
- - ">="
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version:
|
31
|
+
version: 5.0.0
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '5.
|
34
|
+
version: '5.1'
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: actionpack
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 5.0.0
|
42
42
|
- - "<"
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: '5.
|
44
|
+
version: '5.1'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
48
48
|
requirements:
|
49
49
|
- - ">="
|
50
50
|
- !ruby/object:Gem::Version
|
51
|
-
version:
|
51
|
+
version: 5.0.0
|
52
52
|
- - "<"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '5.
|
54
|
+
version: '5.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: appraisal
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,20 +66,34 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '2.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '9.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '9.0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: coveralls
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.8.
|
89
|
+
version: 0.8.13
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.8.
|
96
|
+
version: 0.8.13
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: minitest
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,20 +120,20 @@ dependencies:
|
|
106
120
|
requirements:
|
107
121
|
- - ">="
|
108
122
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
123
|
+
version: 5.0.0
|
110
124
|
- - "<"
|
111
125
|
- !ruby/object:Gem::Version
|
112
|
-
version: '5.
|
126
|
+
version: '5.1'
|
113
127
|
type: :development
|
114
128
|
prerelease: false
|
115
129
|
version_requirements: !ruby/object:Gem::Requirement
|
116
130
|
requirements:
|
117
131
|
- - ">="
|
118
132
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
133
|
+
version: 5.0.0
|
120
134
|
- - "<"
|
121
135
|
- !ruby/object:Gem::Version
|
122
|
-
version: '5.
|
136
|
+
version: '5.1'
|
123
137
|
- !ruby/object:Gem::Dependency
|
124
138
|
name: rake
|
125
139
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,28 +154,28 @@ dependencies:
|
|
140
154
|
requirements:
|
141
155
|
- - "~>"
|
142
156
|
- !ruby/object:Gem::Version
|
143
|
-
version: 0.41.
|
157
|
+
version: 0.41.1
|
144
158
|
type: :development
|
145
159
|
prerelease: false
|
146
160
|
version_requirements: !ruby/object:Gem::Requirement
|
147
161
|
requirements:
|
148
162
|
- - "~>"
|
149
163
|
- !ruby/object:Gem::Version
|
150
|
-
version: 0.41.
|
164
|
+
version: 0.41.1
|
151
165
|
- !ruby/object:Gem::Dependency
|
152
166
|
name: simplecov
|
153
167
|
requirement: !ruby/object:Gem::Requirement
|
154
168
|
requirements:
|
155
169
|
- - "~>"
|
156
170
|
- !ruby/object:Gem::Version
|
157
|
-
version: 0.
|
171
|
+
version: 0.11.2
|
158
172
|
type: :development
|
159
173
|
prerelease: false
|
160
174
|
version_requirements: !ruby/object:Gem::Requirement
|
161
175
|
requirements:
|
162
176
|
- - "~>"
|
163
177
|
- !ruby/object:Gem::Version
|
164
|
-
version: 0.
|
178
|
+
version: 0.11.2
|
165
179
|
description: Translates the Rails routes of your application into the languages defined
|
166
180
|
in your locale files
|
167
181
|
email:
|