route_translator 4.1.0 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
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: []