route_translator 4.1.0 → 4.2.1

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/LICENSE +21 -0
  4. data/README.md +231 -0
  5. data/lib/route_translator/extensions/action_controller.rb +5 -2
  6. data/lib/route_translator/extensions/mapper.rb +5 -5
  7. data/lib/route_translator/extensions/route_set.rb +1 -1
  8. data/lib/route_translator/host.rb +4 -5
  9. data/lib/route_translator/translator.rb +17 -13
  10. data/lib/route_translator/version.rb +1 -1
  11. data/lib/route_translator.rb +1 -1
  12. metadata +92 -59
  13. data/test/dummy/Rakefile +0 -7
  14. data/test/dummy/app/controllers/dummy_controller.rb +0 -11
  15. data/test/dummy/app/views/dummy/show.html.erb +0 -1
  16. data/test/dummy/config/application.rb +0 -21
  17. data/test/dummy/config/boot.rb +0 -0
  18. data/test/dummy/config/environment.rb +0 -5
  19. data/test/dummy/config/initializers/secret_token.rb +0 -7
  20. data/test/dummy/config/initializers/session_store.rb +0 -8
  21. data/test/dummy/config/locales/all.yml +0 -15
  22. data/test/dummy/config/routes.rb +0 -12
  23. data/test/dummy/config.ru +0 -4
  24. data/test/dummy/dummy_mounted_app.rb +0 -5
  25. data/test/dummy/script/rails +0 -6
  26. data/test/host_test.rb +0 -108
  27. data/test/integration/generated_path_test.rb +0 -37
  28. data/test/integration/host_locales_test.rb +0 -59
  29. data/test/integration/routing_test.rb +0 -22
  30. data/test/integration/thread_safety_test.rb +0 -16
  31. data/test/locales/routes.yml +0 -13
  32. data/test/routing_test.rb +0 -664
  33. data/test/support/assertion_helper.rb +0 -27
  34. data/test/support/configuration_helper.rb +0 -52
  35. data/test/support/i18n_helper.rb +0 -24
  36. data/test/support/integration_helper.rb +0 -6
  37. data/test/support/routes_helper.rb +0 -60
  38. data/test/test_helper.rb +0 -32
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dee4174f252499d6bc2dd422c15ba1c539532b77
4
- data.tar.gz: 06c136f125a12a4764145088525eb0b72e672dba
3
+ metadata.gz: 52a2ffb8a027023143d004c7b407ec955fe2e007
4
+ data.tar.gz: 081e4f0721ab2dc82412dde2a0e9eddd9276d570
5
5
  SHA512:
6
- metadata.gz: f60b0e973d0258ad00d6bcd1db400fd6850c3450e790880130c6aa3378284b4ac7cb5ce00a7cd3c15564c1406fdda1ca28cc37d5186f34072f40a3086ceac286
7
- data.tar.gz: 26e6d96d602c8af382982ef485639fc0b006f2c5e4154649950ad1f338c5630188b5790de20e02860c0f3c1ebe0294a8394e0cc88c018544ba4f7b4cb1d1c494
6
+ metadata.gz: 16c18fd1dbc61beb9ac9d632d32d9b72ee2b9a998aa55a076066d6391379ef0761ac366ceeae8042f0f6362473f9f99d02fdc259e1d0da59e55469f166a890fc
7
+ data.tar.gz: 52f6d6569aeb42d5c6b6b7c257aef073cd25e1e45d0fa320e12f2e509f51b4356503051e376730221737a98db4ac0e4a72e231708a07ff75d0645de189ba91fc
data/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # Changelog
2
+
3
+ ## 4.2.1 (2015-12-15)
4
+
5
+ * Fix: gemspec
6
+
7
+ ## 4.2.0 (2015-12-15)
8
+
9
+ * Style update to match RuboCop recommandations
10
+ * Fix: permit named_params with suffix (#116)
11
+ * Fix: optional parameters with prefix (#118)
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2007 Raul Murciano [http://raul.murciano.net], Domestika INTERNET S.L. [http://domestika.org], 2015 Enric Lluelles [http://enric.lluell.es]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,231 @@
1
+ # RouteTranslator
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/route_translator.svg)](http://badge.fury.io/rb/route_translator)
4
+ [![Build Status](https://travis-ci.org/enriclluelles/route_translator.svg?branch=master)](https://travis-ci.org/enriclluelles/route_translator)
5
+ [![Dependency Status](https://gemnasium.com/enriclluelles/route_translator.svg)](https://gemnasium.com/enriclluelles/route_translator)
6
+ [![Code Climate](https://codeclimate.com/github/enriclluelles/route_translator/badges/gpa.svg)](https://codeclimate.com/github/enriclluelles/route_translator)
7
+ [![Coverage Status](https://coveralls.io/repos/enriclluelles/route_translator/badge.svg?branch=master&service=github)](https://coveralls.io/github/enriclluelles/route_translator?branch=master)
8
+
9
+ RouteTranslator is a gem to allow you to manage the translations of your app routes with a simple dictionary format.
10
+
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
+
13
+ Right now it works with all the different flavours of rails 3-4 (3.2, 4.0, 4.1, 4.2).
14
+
15
+
16
+
17
+ ## Quick Start
18
+
19
+ 1. If you have this `routes.rb` file originally:
20
+
21
+ ```ruby
22
+ MyApp::Application.routes.draw do
23
+
24
+ namespace :admin do
25
+ resources :cars
26
+ end
27
+
28
+ resources :cars
29
+ end
30
+ ```
31
+
32
+ The output of `rake routes.rb` would be:
33
+
34
+ ```
35
+ admin_cars GET /admin/cars(.:format) admin/cars#index
36
+ POST /admin/cars(.:format) admin/cars#create
37
+ new_admin_car GET /admin/cars/new(.:format) admin/cars#new
38
+ edit_admin_car GET /admin/cars/:id/edit(.:format) admin/cars#edit
39
+ admin_car GET /admin/cars/:id(.:format) admin/cars#show
40
+ PUT /admin/cars/:id(.:format) admin/cars#update
41
+ DELETE /admin/cars/:id(.:format) admin/cars#destroy
42
+ cars GET /cars(.:format) cars#index
43
+ POST /cars(.:format) cars#create
44
+ new_car GET /cars/new(.:format) cars#new
45
+ edit_car GET /cars/:id/edit(.:format) cars#edit
46
+ car GET /cars/:id(.:format) cars#show
47
+ PUT /cars/:id(.:format) cars#update
48
+ DELETE /cars/:id(.:format) cars#destroy
49
+ ```
50
+
51
+ 2. Add the gem to your `Gemfile`:
52
+
53
+ ```ruby
54
+ gem 'route_translator'
55
+ ```
56
+
57
+ And execute `bundle install`
58
+
59
+ 3. Wrap the groups of routes that you want to translate inside a `localized` block:
60
+
61
+ ```ruby
62
+ MyApp::Application.routes.draw do
63
+
64
+ namespace :admin do
65
+ resources :cars
66
+ end
67
+
68
+ localized do
69
+ resources :cars
70
+
71
+ get 'pricing', to: 'home#pricing', as: :pricing
72
+ end
73
+ end
74
+ ```
75
+
76
+ And add the translations to your locale files, for example:
77
+
78
+ ```yml
79
+ es:
80
+ routes:
81
+ cars: coches
82
+ new: nuevo
83
+ pricing: precios
84
+ fr:
85
+ routes:
86
+ cars: voitures
87
+ new: nouveau
88
+ pricing: prix
89
+ ```
90
+
91
+ 4. Your routes are translated! Here's the output of your `rake routes` now:
92
+
93
+ ```
94
+ admin_cars GET /admin/cars(.:format) admin/cars#index
95
+ POST /admin/cars(.:format) admin/cars#create
96
+ new_admin_car GET /admin/cars/new(.:format) admin/cars#new
97
+ edit_admin_car GET /admin/cars/:id/edit(.:format) admin/cars#edit
98
+ admin_car GET /admin/cars/:id(.:format) admin/cars#show
99
+ PUT /admin/cars/:id(.:format) admin/cars#update
100
+ DELETE /admin/cars/:id(.:format) admin/cars#destroy
101
+ cars_en GET /cars(.:format) cars#index {:locale=>"en"}
102
+ cars_es GET /es/coches(.:format) cars#index {:locale=>"es"}
103
+ cars_fr GET /fr/voitures(.:format) cars#index {:locale=>"fr"}
104
+ POST /cars(.:format) cars#create {:locale=>"en"}
105
+ POST /es/coches(.:format) cars#create {:locale=>"es"}
106
+ POST /fr/voitures(.:format) cars#create {:locale=>"fr"}
107
+ new_car_en GET /cars/new(.:format) cars#new {:locale=>"en"}
108
+ new_car_es GET /es/coches/nuevo(.:format) cars#new {:locale=>"es"}
109
+ new_car_fr GET /fr/voitures/nouveau(.:format) cars#new {:locale=>"fr"}
110
+ edit_car_en GET /cars/:id/edit(.:format) cars#edit {:locale=>"en"}
111
+ edit_car_es GET /es/coches/:id/edit(.:format) cars#edit {:locale=>"es"}
112
+ edit_car_fr GET /fr/voitures/:id/edit(.:format) cars#edit {:locale=>"fr"}
113
+ car_en GET /cars/:id(.:format) cars#show {:locale=>"en"}
114
+ car_es GET /es/coches/:id(.:format) cars#show {:locale=>"es"}
115
+ car_fr GET /fr/voitures/:id(.:format) cars#show {:locale=>"fr"}
116
+ PUT /cars/:id(.:format) cars#update {:locale=>"en"}
117
+ PUT /es/coches/:id(.:format) cars#update {:locale=>"es"}
118
+ PUT /fr/voitures/:id(.:format) cars#update {:locale=>"fr"}
119
+ DELETE /cars/:id(.:format) cars#destroy {:locale=>"en"}
120
+ DELETE /es/coches/:id(.:format) cars#destroy {:locale=>"es"}
121
+ DELETE /fr/voitures/:id(.:format) cars#destroy {:locale=>"fr"}
122
+ ```
123
+
124
+ Note that only the routes inside a `localized` block are translated.
125
+
126
+ In :development environment, I18n is configured by default to not use fallback language.
127
+ When a translation is missing, it uses the translation key last segment as fallback (`cars` and `new` in this example).
128
+
129
+ In :production environment, you should either set `config.i18n.fallbacks = false` or set up translations for your routes in every languages.
130
+
131
+ 5. Your I18n.locale will be set up automatically from the url param when it's available.
132
+
133
+ To disable it add this to your controller:
134
+
135
+ ```ruby
136
+ skip_around_filter :set_locale_from_url
137
+ ```
138
+
139
+
140
+
141
+ ## Configuration
142
+
143
+ You can configure RouteTranslator via an initializer or using the different environment config files.
144
+
145
+ ```ruby
146
+ RouteTranslator.config do |config|
147
+ config.force_locale = true
148
+ config.locale_param_key = :my_locale
149
+ end
150
+ ```
151
+
152
+
153
+
154
+ ### Available Configurations
155
+
156
+ * **force_locale**
157
+ Set this options to `true` to force the locale to be added to all generated route paths, even for the default locale.
158
+ Defaults to `false`.
159
+ * **hide_locale**
160
+ Set this options to `true` to force the locale to be hidden on generated route paths.
161
+ Defaults to `false`.
162
+ * **generate_unlocalized_routes**
163
+ Set this option to `true` to add translated routes without deleting original unlocalized versions.
164
+ Autosets `force_locale=true`.
165
+ Defaults to `false`.
166
+ * **generate_unnamed_unlocalized_routes**
167
+ Set this option to `true` to add the behavior of **force_locale**, but with a named default route which behaves as if **generate_unlocalized_routes** was `true`.
168
+ `root_path` will redirect to `/en` or `/es` depending on the value of `I18n.locale`.
169
+ Defaults to `false`.
170
+ * **locale_param_key**
171
+ The param key that will be used to set the locale to the newly generated routes.
172
+ Defaults to `:locale`
173
+ * **host_locales**
174
+ Optional hash to set `I18n.default_locale` based on `request.host`.
175
+ Useful for apps accepting requests from more than one domain.
176
+ See below for more details.
177
+ * **disable_fallback**
178
+ Set this option to `true` to create only the routes for each locale that have translations.
179
+ For example if we have `/examples` and a translation is not provided for ES, a route helper of `examples_es` will not be created.
180
+ Defaults to `false`.
181
+ Useful when one uses this with a locale route constraint, so non-ES routes can 404 on a Spanish website.
182
+
183
+
184
+
185
+ ### Host-based Locale
186
+
187
+ If you have an application serving requests from more than one domain, you might want to set `I18n.default_locale` dynamically based on which domain the request is coming from.
188
+
189
+ The `host_locales` option is a hash mapping hosts to locales, with full wildcard support to allow matching multiple domains/subdomains/tlds.
190
+ Host matching is case insensitive.
191
+
192
+ When a request hits your app from a domain matching one of the wild-card matchers defined in `host_locales`, the default_locale will be set to the specified locale.
193
+ Unless you specified the `force_locale` configuration option to `true`, that locale will be hidden from routes (acting like a dynamic `hide_locale` option).
194
+
195
+ Here are a few examples of possible mappings:
196
+
197
+ ```ruby
198
+ RouteTranslator.config.host_locales =
199
+ { # Matches:
200
+ '*.es' => :es, # TLD: ['domain.es', 'subdomain.domain.es', 'www.long.string.of.subdomains.es'] etc.
201
+ 'ru.wikipedia.*' => :ru, # Subdomain: ['ru.wikipedia.org', 'ru.wikipedia.net', 'ru.wikipedia.com'] etc.
202
+ '*.subdomain.domain.*' => :ru, # Mixture: ['subdomain.domain.org', 'www.subdomain.domain.net'] etc.
203
+ 'news.bbc.co.uk' => :en, # Exact match: ['news.bbc.co.uk'] only
204
+ }
205
+ ```
206
+
207
+ In the case of a host matching more than once, the order in which the matchers are defined will be taken into account, like so:
208
+
209
+ ```ruby
210
+ RouteTranslator.config.host_locales = { 'russia.*' => :ru, '*.com' => :en } # 'russia.com' will have locale :ru
211
+ RouteTranslator.config.host_locales = { '*.com' => :en, 'russia.*' => :ru } # 'russia.com' will have locale :en
212
+ ```
213
+
214
+ If `host_locales` option is set, the following options will be forced (even if you set to true):
215
+
216
+ ```ruby
217
+ @config.generate_unlocalized_routes = false
218
+ @config.generate_unnamed_unlocalized_routes = false
219
+ @config.force_locale = false
220
+ @config.hide_locale = false
221
+ ```
222
+
223
+ This is to avoid odd behaviour brought about by route conflicts and because `host_locales` forces and hides the host-locale dynamically.
224
+
225
+
226
+
227
+ ## Contributing
228
+
229
+ Please read through our [contributing guidelines](CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
230
+
231
+ More over, if your pull request contains patches or features, you must include relevant unit tests.
@@ -28,7 +28,10 @@ module ActionController
28
28
  class TestCase
29
29
  include ActionController::UrlFor
30
30
 
31
- delegate :env, :request, :to => :@controller
32
- def _routes; @routes; end
31
+ delegate :env, :request, to: :@controller
32
+
33
+ def _routes
34
+ @routes
35
+ end
33
36
  end
34
37
  end
@@ -9,12 +9,12 @@ module ActionDispatch
9
9
  @localized = false
10
10
  end
11
11
 
12
- if instance_methods.map(&:to_s).include?('add_route')
12
+ if instance_methods.map(&:to_s).include?('add_route'.freeze)
13
13
  def add_route(action, options) # :nodoc:
14
14
  path = path_for_action(action, options.delete(:path))
15
15
 
16
- if action.to_s =~ /^[\w\/]+$/
17
- options[:action] ||= action unless action.to_s.include?("/")
16
+ if action.to_s =~ %r{^[\w\/]+$}.freeze
17
+ options[:action] ||= action unless action.to_s.include?('/'.freeze)
18
18
  else
19
19
  action = nil
20
20
  end
@@ -27,7 +27,7 @@ module ActionDispatch
27
27
 
28
28
  begin
29
29
  mapping = Mapping.new(@set, @scope, path, options)
30
- rescue ArgumentError => e
30
+ rescue ArgumentError
31
31
  mapping = Mapping.build(@scope, @set, URI.parser.escape(path), options.delete(:as), options)
32
32
  end
33
33
 
@@ -39,7 +39,7 @@ module ActionDispatch
39
39
  end
40
40
  else
41
41
  module Base
42
- def match(path, options=nil)
42
+ def match(path, options = nil)
43
43
  mapping = Mapping.new(@set, @scope, path, options || {})
44
44
  app, conditions, requirements, defaults, as, anchor = mapping.to_route
45
45
  if @localized
@@ -10,4 +10,4 @@ module ActionDispatch
10
10
  end
11
11
  end
12
12
  end
13
- end
13
+ end
@@ -1,9 +1,8 @@
1
1
  module RouteTranslator
2
2
  module Host
3
3
  def self.locale_from_host(host)
4
- locales = RouteTranslator.config.host_locales.reduce([]) do |locales, (pattern, locale)|
5
- locales << locale.to_sym if host =~ regex_for(pattern)
6
- locales
4
+ locales = RouteTranslator.config.host_locales.each_with_object([]) do |(pattern, locale), result|
5
+ result << locale.to_sym if host =~ regex_for(pattern)
7
6
  end
8
7
  locales &= I18n.available_locales
9
8
  (locales.first || I18n.default_locale).to_sym
@@ -15,11 +14,11 @@ module RouteTranslator
15
14
  end
16
15
 
17
16
  def native_locale?(locale)
18
- !!locale.to_s.match(/native_/)
17
+ locale.to_s.match(/native_/).present?
19
18
  end
20
19
 
21
20
  def native_locales
22
- config.host_locales.values.map {|locale| :"native_#{locale}" }
21
+ config.host_locales.values.map { |locale| :"native_#{locale}" }
23
22
  end
24
23
  end
25
24
  end
@@ -6,7 +6,7 @@ module RouteTranslator
6
6
  # I18n.locale = :fr
7
7
  # people_path -> people_fr_path
8
8
  def self.add_untranslated_helpers_to_controllers_and_views(old_name, named_route_collection)
9
- if (named_route_collection.respond_to?(:url_helpers_module))
9
+ if named_route_collection.respond_to?(:url_helpers_module)
10
10
  url_helpers_module = named_route_collection.url_helpers_module
11
11
  path_helpers_module = named_route_collection.path_helpers_module
12
12
  url_helpers_list = named_route_collection.helper_names
@@ -55,7 +55,7 @@ module RouteTranslator
55
55
  new_defaults = defaults.merge(RouteTranslator.locale_param_key => locale.to_s.gsub('native_', ''))
56
56
  new_requirements = requirements.merge(RouteTranslator.locale_param_key => locale.to_s)
57
57
  new_route_name = translate_name(route_name, locale)
58
- new_route_name = nil if new_route_name && route_set.named_routes.routes[new_route_name.to_sym] #TODO: Investigate this :(
58
+ new_route_name = nil if new_route_name && route_set.named_routes.routes[new_route_name.to_sym] # TODO: Investigate this :(
59
59
  block.call(app, new_conditions, new_requirements, new_defaults, new_route_name, anchor)
60
60
  end
61
61
  if RouteTranslator.config.generate_unnamed_unlocalized_routes
@@ -66,6 +66,7 @@ module RouteTranslator
66
66
  end
67
67
 
68
68
  private
69
+
69
70
  def self.available_locales
70
71
  available_locales = config_locales || I18n.available_locales.dup
71
72
  available_locales.push(*RouteTranslator.native_locales) if RouteTranslator.native_locales.present?
@@ -77,15 +78,15 @@ module RouteTranslator
77
78
 
78
79
  def self.config_locales
79
80
  if RouteTranslator.config.available_locales
80
- RouteTranslator.config.available_locales.map{|l| l.to_sym}
81
+ RouteTranslator.config.available_locales.map(&:to_sym)
81
82
  end
82
83
  end
83
84
 
84
85
  # Translates a path and adds the locale prefix.
85
86
  def self.translate_path(path, locale)
86
87
  new_path = path.dup
87
- final_optional_segments = new_path.slice!(/(\([^\/]+\))$/)
88
- translated_segments = new_path.split(/\/|\./).map{ |seg| translate_path_segment(seg, locale) }.select{ |seg| !seg.blank? }
88
+ final_optional_segments = new_path.slice!(%r{(\([^\/]+\))$})
89
+ translated_segments = new_path.split(%r{\/|\.}).map { |seg| translate_path_segment(seg, locale) }.select { |seg| !seg.blank? }
89
90
 
90
91
  if display_locale?(locale) && !locale_param_present?(new_path)
91
92
  translated_segments.unshift(locale.to_s.downcase)
@@ -96,7 +97,7 @@ module RouteTranslator
96
97
  memo << separator << segment
97
98
  end
98
99
 
99
- "/#{joined_segments}#{final_optional_segments}".gsub(/\/\(\//, '(/')
100
+ "/#{joined_segments}#{final_optional_segments}".gsub(%r{\/\(\/}, '(/')
100
101
  end
101
102
 
102
103
  def self.display_locale?(locale)
@@ -121,28 +122,31 @@ module RouteTranslator
121
122
  # segment is blank, begins with a ":" (param key) or "*" (wildcard),
122
123
  # the segment is returned untouched
123
124
  def self.translate_path_segment(segment, locale)
124
- return segment if segment.blank? or segment.starts_with?(":") or segment.starts_with?("(") or segment.starts_with?("*")
125
+ return segment if segment.blank?
126
+ named_param, hyphenized = segment.split('-'.freeze, 2) if segment.starts_with?(':'.freeze)
127
+ return "#{named_param}-#{translate_path_segment(hyphenized.dup, locale)}" if hyphenized
128
+ return segment if segment.starts_with?('('.freeze) || segment.starts_with?('*'.freeze) || segment.include?(':'.freeze)
125
129
 
126
130
  appended_part = segment.slice!(/(\()$/)
127
- match = TRANSLATABLE_SEGMENT.match(segment)[1] rescue nil
131
+ match = TRANSLATABLE_SEGMENT.match(segment)[1] if TRANSLATABLE_SEGMENT.match(segment)
128
132
 
129
133
  (translate_string(match, locale) || segment) + appended_part.to_s
130
134
  end
131
135
 
132
136
  def self.translate_string(str, locale)
133
137
  locale = "#{locale}".gsub('native_', '')
134
- opts = {:scope => :routes, :locale => locale}
138
+ opts = { scope: :routes, locale: locale }
135
139
  if RouteTranslator.config.disable_fallback && locale.to_s != I18n.default_locale.to_s
136
140
  opts[:fallback] = true
137
141
  else
138
142
  opts[:default] = str
139
143
  end
140
- res = I18n.translate(str, opts)
144
+ res = I18n.translate(str, opts)
141
145
  URI.escape(res)
142
146
  end
143
147
 
144
148
  def self.locale_param_present?(path)
145
- !(path.split('/').detect { |segment| segment.to_s == ":#{RouteTranslator.locale_param_key.to_s}" }.nil?)
149
+ !(path.split('/').detect { |segment| segment.to_s == ":#{RouteTranslator.locale_param_key}" }.nil?)
146
150
  end
147
151
 
148
152
  def self.host_locales_option?
@@ -150,8 +154,8 @@ module RouteTranslator
150
154
  end
151
155
 
152
156
  def self.route_name_for(args, old_name, suffix, kaller)
153
- args_hash = args.detect{|arg| arg.is_a?(Hash)}
154
- args_locale = host_locales_option? && args_hash && args_hash[:locale]
157
+ args_hash = args.detect { |arg| arg.is_a?(Hash) }
158
+ args_locale = host_locales_option? && args_hash && args_hash[:locale]
155
159
  current_locale_name = I18n.locale.to_s.underscore
156
160
 
157
161
  locale = if args_locale
@@ -1,3 +1,3 @@
1
1
  module RouteTranslator
2
- VERSION = '4.1.0'
2
+ VERSION = '4.2.1'
3
3
  end
@@ -39,6 +39,6 @@ module RouteTranslator
39
39
  end
40
40
 
41
41
  def self.locale_param_key
42
- self.config.locale_param_key
42
+ config.locale_param_key
43
43
  end
44
44
  end
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.1.0
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raul Murciano
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-24 00:00:00.000000000 Z
12
+ date: 2015-12-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -52,19 +52,101 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: '5.0'
54
54
  - !ruby/object:Gem::Dependency
55
- name: pry
55
+ name: appraisal
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 0.10.1
60
+ version: '2.1'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 0.10.1
67
+ version: '2.1'
68
+ - !ruby/object:Gem::Dependency
69
+ name: coveralls
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.8.10
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.8.10
82
+ - !ruby/object:Gem::Dependency
83
+ name: minitest
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 4.7.5
89
+ - - "<"
90
+ - !ruby/object:Gem::Version
91
+ version: 6.0.0
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 4.7.5
99
+ - - "<"
100
+ - !ruby/object:Gem::Version
101
+ version: 6.0.0
102
+ - !ruby/object:Gem::Dependency
103
+ name: rails
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '3.2'
109
+ - - "<"
110
+ - !ruby/object:Gem::Version
111
+ version: '5.0'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '3.2'
119
+ - - "<"
120
+ - !ruby/object:Gem::Version
121
+ version: '5.0'
122
+ - !ruby/object:Gem::Dependency
123
+ name: rubocop
124
+ requirement: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '0.35'
129
+ type: :development
130
+ prerelease: false
131
+ version_requirements: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '0.35'
136
+ - !ruby/object:Gem::Dependency
137
+ name: simplecov
138
+ requirement: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: 0.11.1
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: 0.11.1
68
150
  description: Translates the Rails routes of your application into the languages defined
69
151
  in your locale files
70
152
  email: enric@lluell.es
@@ -72,6 +154,9 @@ executables: []
72
154
  extensions: []
73
155
  extra_rdoc_files: []
74
156
  files:
157
+ - CHANGELOG.md
158
+ - LICENSE
159
+ - README.md
75
160
  - lib/route_translator.rb
76
161
  - lib/route_translator/extensions.rb
77
162
  - lib/route_translator/extensions/action_controller.rb
@@ -80,32 +165,6 @@ files:
80
165
  - lib/route_translator/host.rb
81
166
  - lib/route_translator/translator.rb
82
167
  - lib/route_translator/version.rb
83
- - test/dummy/Rakefile
84
- - test/dummy/app/controllers/dummy_controller.rb
85
- - test/dummy/app/views/dummy/show.html.erb
86
- - test/dummy/config.ru
87
- - test/dummy/config/application.rb
88
- - test/dummy/config/boot.rb
89
- - test/dummy/config/environment.rb
90
- - test/dummy/config/initializers/secret_token.rb
91
- - test/dummy/config/initializers/session_store.rb
92
- - test/dummy/config/locales/all.yml
93
- - test/dummy/config/routes.rb
94
- - test/dummy/dummy_mounted_app.rb
95
- - test/dummy/script/rails
96
- - test/host_test.rb
97
- - test/integration/generated_path_test.rb
98
- - test/integration/host_locales_test.rb
99
- - test/integration/routing_test.rb
100
- - test/integration/thread_safety_test.rb
101
- - test/locales/routes.yml
102
- - test/routing_test.rb
103
- - test/support/assertion_helper.rb
104
- - test/support/configuration_helper.rb
105
- - test/support/i18n_helper.rb
106
- - test/support/integration_helper.rb
107
- - test/support/routes_helper.rb
108
- - test/test_helper.rb
109
168
  homepage: http://github.com/enriclluelles/route_translator
110
169
  licenses:
111
170
  - MIT
@@ -126,34 +185,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
185
  version: '0'
127
186
  requirements: []
128
187
  rubyforge_project:
129
- rubygems_version: 2.4.5.1
188
+ rubygems_version: 2.4.3
130
189
  signing_key:
131
190
  specification_version: 4
132
191
  summary: Translate your Rails routes in a simple manner
133
- test_files:
134
- - test/dummy/Rakefile
135
- - test/dummy/app/controllers/dummy_controller.rb
136
- - test/dummy/app/views/dummy/show.html.erb
137
- - test/dummy/config.ru
138
- - test/dummy/config/application.rb
139
- - test/dummy/config/boot.rb
140
- - test/dummy/config/environment.rb
141
- - test/dummy/config/initializers/secret_token.rb
142
- - test/dummy/config/initializers/session_store.rb
143
- - test/dummy/config/locales/all.yml
144
- - test/dummy/config/routes.rb
145
- - test/dummy/dummy_mounted_app.rb
146
- - test/dummy/script/rails
147
- - test/host_test.rb
148
- - test/integration/generated_path_test.rb
149
- - test/integration/host_locales_test.rb
150
- - test/integration/routing_test.rb
151
- - test/integration/thread_safety_test.rb
152
- - test/locales/routes.yml
153
- - test/routing_test.rb
154
- - test/support/assertion_helper.rb
155
- - test/support/configuration_helper.rb
156
- - test/support/i18n_helper.rb
157
- - test/support/integration_helper.rb
158
- - test/support/routes_helper.rb
159
- - test/test_helper.rb
192
+ test_files: []