route_translator 5.1.0 → 5.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: db2eb895765c0bc6d9331fb86fa65f36ad1e2f11
4
- data.tar.gz: 34389bc82a4bed4c1b7fac7e4588710ca4316cac
3
+ metadata.gz: 1e052715e0f6568065a6752767ba185679e0b690
4
+ data.tar.gz: b53d37139709fc1786fed663161e64438d60fe9d
5
5
  SHA512:
6
- metadata.gz: da58eb381c0ec9f894e5b54457ea3b172902fe778c4d52ceacc708a7a410192552bffc2bc4a3a28ab55963635e82f9cc5df212ede87d2c254411763c40bc7460
7
- data.tar.gz: f29622f458c5781277d3835c396f325b13973aec2f5c49496fb23a4bef29b64ce10041301a997f55bfc345c8ccf01887f59720c6bb8ef624de7c225a6bbc0e7e
6
+ metadata.gz: 87dbd3ae753dd22a43a4e3ceab878d20d30a640a46adbd5cb945592de108ad0bad55347246738f3f0faf21327044a6f236f164f4057bb459a12ca57b380f6a1c
7
+ data.tar.gz: 5e35380e56296c10c85ff144c525d32c5b8bfc7da17a87d1f13c93cb1839228004f907a5c7286ae923ae6770d3e441412635d2d463c474ec62e9f853384a918c
data/CHANGELOG.md CHANGED
@@ -1,80 +1,96 @@
1
1
  # Changelog
2
2
 
3
- ## 5.1.0 (2017-01-24)
3
+ ## 5.2.2 / 2017-03-21
4
4
 
5
- * Add: Translate controllers with namespaces (#120)
6
- * Update development dependencies
5
+ * [BUGFIX] Lock maximum Rails version to 5.1.0.beta1
7
6
 
8
- ## 5.0.6 (2017-01-17)
7
+ ## 5.2.1 / 2017-03-09
9
8
 
10
- * Test against Ruby 2.4.0
11
- * Update copyright in LICENSE
12
- * Improve Translator method
13
- * Minor improvements
9
+ * [ENHANCEMENT] Use Ruby 2.3's Frozen String Literal Pragma
10
+ * [ENHANCEMENT] Minor improvements
14
11
 
15
- ## 5.0.5 (2016-12-15)
12
+ ## 5.2.0 / 2017-03-08
16
13
 
17
- * Fix generated prefix to localized one (#123)
18
- * Improve Mapper's monkey patch
14
+ * [FEATURE] Rails 5.1 compatibility
15
+ * [BUGFIX] Do not change I18n.default_locale
16
+ * [ENHANCEMENT] Cleanup test suite
17
+ * [ENHANCEMENT] Follow Vandamme's changelog conventions
19
18
 
20
- ## 5.0.4 (2016-11-11)
19
+ ## 5.1.0 / 2017-01-24
21
20
 
22
- * Retain value of options_constraints if callable
21
+ * [FEATURE] Translate controllers with namespaces (#120)
22
+ * [ENHANCEMENT] Update development dependencies
23
23
 
24
- ## 5.0.3 (2016-11-01)
24
+ ## 5.0.6 / 2017-01-17
25
25
 
26
- * Fix issue with callable constraints
27
- * Update development dependencies
26
+ * [PERFORMANCE] Improve Translator method
27
+ * [ENHANCEMENT] Test against Ruby 2.4.0
28
+ * [ENHANCEMENT] Update copyright in LICENSE
29
+ * [ENHANCEMENT] Minor improvements
28
30
 
29
- ## 5.0.2 (2016-08-02)
31
+ ## 5.0.5 / 2016-12-15
30
32
 
31
- * Replace around_filter with around_action
32
- * Update development dependencies
33
+ * [BUGFIX] Fix generated prefix to localized one (#123)
34
+ * [PERFORMANCE] Improve Mapper's monkey patch
33
35
 
34
- ## 5.0.1 (2016-07-14)
36
+ ## 5.0.4 / 2016-11-11
35
37
 
36
- * Add private keyword in Segment module
37
- * Update development dependencies
38
+ * [BUGFIX] Retain value of options_constraints if callable
38
39
 
39
- ## 5.0.0 (2016-07-01)
40
+ ## 5.0.3 / 2016-11-01
40
41
 
41
- * Rails 5 compatibility
42
+ * [BUGFIX] Fix issue with callable constraints
43
+ * [ENHANCEMENT] Update development dependencies
42
44
 
43
- ## 4.4.0 (2016-07-01)
45
+ ## 5.0.2 / 2016-08-02
44
46
 
45
- * Support custom locale path segments, i.e. /uk/en/widgets
46
- * Using AS::Concern instead of monkey patching ActionController
47
- * Update development dependencies
47
+ * [BUGFIX] Replace around_filter with around_action
48
+ * [ENHANCEMENT] Update development dependencies
48
49
 
49
- ## 4.3.0 (2016-03-03)
50
+ ## 5.0.1 / 2016-07-14
50
51
 
51
- * Refactor translator module
52
+ * [ENHANCEMENT] Add private keyword in Segment module
53
+ * [ENHANCEMENT] Update development dependencies
52
54
 
53
- ## 4.2.5 (2016-02-11)
55
+ ## 5.0.0 / 2016-07-01
54
56
 
55
- * Fix: Generate correct route when a segment is preceded by a dot (#132)
56
- * Improve TestCase helpers test
57
+ * [FEATURE] Rails 5 compatibility
57
58
 
58
- ## 4.2.4 (2016-02-04)
59
+ ## 4.4.0 / 2016-07-01
59
60
 
60
- * Change how helpers are loaded in TestCase
61
- * Update dependencies
61
+ * [FEATURE] Support custom locale path segments, i.e. /uk/en/widgets
62
+ * [ENHANCEMENT] Using AS::Concern instead of monkey patching ActionController
63
+ * [ENHANCEMENT] Update development dependencies
62
64
 
63
- ## 4.2.3 (2016-01-15)
65
+ ## 4.3.0 / 2016-03-03
64
66
 
65
- * Minor tweaks
67
+ * [PERFORMANCE] Refactor translator module
66
68
 
67
- ## 4.2.2 (2015-12-16)
69
+ ## 4.2.5 / 2016-02-11
68
70
 
69
- * Fix: native path generation with host_locale (#95)
70
- * Improve tests
71
+ * [BUGFIX] Generate correct route when a segment is preceded by a dot (#132)
72
+ * [ENHANCEMENT] Improve TestCase helpers test
71
73
 
72
- ## 4.2.1 (2015-12-15)
74
+ ## 4.2.4 / 2016-02-04
73
75
 
74
- * Fix: gemspec
76
+ * [BUGFIX] Change how helpers are loaded in TestCase
77
+ * [ENHANCEMENT] Update dependencies
75
78
 
76
- ## 4.2.0 (2015-12-15)
79
+ ## 4.2.3 / 2016-01-15
77
80
 
78
- * Style update to match RuboCop recommandations
79
- * Fix: permit named_params with suffix (#116)
80
- * Fix: optional parameters with prefix (#118)
81
+ * [PERFORMANCE] Minor tweaks
82
+
83
+ ## 4.2.2 / 2015-12-16
84
+
85
+ * [BUGFIX] Fix native path generation with host_locale (#95)
86
+ * [ENHANCEMENT] Improve tests
87
+
88
+ ## 4.2.1 / 2015-12-15
89
+
90
+ * [BUGFIX] Fix gemspec
91
+
92
+ ## 4.2.0 / 2015-12-15
93
+
94
+ * [ENHANCEMENT] Style update to match RuboCop recommandations
95
+ * [BUGFIX] Permit named_params with suffix (#116)
96
+ * [BUGFIX] Fix optional parameters with prefix (#118)
data/README.md CHANGED
@@ -10,7 +10,7 @@ RouteTranslator is a gem to allow you to manage the translations of your app rou
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 Rails 5.0
13
+ Right now it works with Rails 5.0/5.1
14
14
 
15
15
 
16
16
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'active_support'
2
3
 
3
4
  require File.expand_path('../route_translator/extensions', __FILE__)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require File.expand_path('../extensions/mapper', __FILE__)
2
3
  require File.expand_path('../extensions/route_set', __FILE__)
3
4
  require File.expand_path('../extensions/action_controller', __FILE__)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'action_controller'
2
3
  require 'active_support/concern'
3
4
 
@@ -12,13 +13,7 @@ module RouteTranslator
12
13
  private
13
14
 
14
15
  def set_locale_from_url
15
- tmp_default_locale = RouteTranslator::Host.locale_from_host(request.host)
16
- if tmp_default_locale
17
- current_default_locale = I18n.default_locale
18
- I18n.default_locale = tmp_default_locale
19
- end
20
-
21
- tmp_locale = params[RouteTranslator.locale_param_key] || tmp_default_locale
16
+ tmp_locale = params[RouteTranslator.locale_param_key] || RouteTranslator::Host.locale_from_host(request.host)
22
17
  if tmp_locale
23
18
  current_locale = I18n.locale
24
19
  I18n.locale = tmp_locale
@@ -27,7 +22,6 @@ module RouteTranslator
27
22
  yield
28
23
 
29
24
  ensure
30
- I18n.default_locale = current_default_locale if tmp_default_locale
31
25
  I18n.locale = current_locale if tmp_locale
32
26
  end
33
27
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'action_dispatch'
2
3
 
3
4
  module ActionDispatch
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module RouteTranslator
2
3
  module Host
3
4
  class << self
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module RouteTranslator
2
3
  class Route
3
4
  attr_reader :route_set, :path, :name, :options_constraints, :options, :mapping
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  require File.expand_path('../translator/route_helpers', __FILE__)
4
3
  require File.expand_path('../translator/path', __FILE__)
5
4
  require File.expand_path('../route', __FILE__)
@@ -9,8 +8,9 @@ module RouteTranslator
9
8
  class << self
10
9
  private
11
10
 
12
- def host_locales_option?
13
- RouteTranslator.config.host_locales.present?
11
+ def locale_from_args(args)
12
+ args_hash = args.detect { |arg| arg.is_a?(Hash) }
13
+ args_hash[:locale] if RouteTranslator.config.host_locales.present? && args_hash
14
14
  end
15
15
 
16
16
  def translate_name(name, locale, named_routes_names)
@@ -75,8 +75,7 @@ module RouteTranslator
75
75
  end
76
76
 
77
77
  def route_name_for(args, old_name, suffix, kaller)
78
- args_hash = args.detect { |arg| arg.is_a?(Hash) }
79
- args_locale = host_locales_option? && args_hash && args_hash[:locale]
78
+ args_locale = locale_from_args(args)
80
79
  current_locale_name = I18n.locale.to_s.underscore
81
80
 
82
81
  locale = if args_locale
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require File.expand_path('../path/segment', __FILE__)
2
3
 
3
4
  module RouteTranslator
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module RouteTranslator
2
3
  module Translator
3
4
  module Path
@@ -13,8 +14,14 @@ module RouteTranslator
13
14
  end
14
15
  end
15
16
 
16
- def translate_resource(str, locale, opts)
17
+ def translatable_segment(segment)
18
+ matches = TRANSLATABLE_SEGMENT.match(segment)
19
+ matches[1] if matches.present?
20
+ end
21
+
22
+ def translate_resource(str, locale, scope)
17
23
  handler = proc { |exception| exception }
24
+ opts = { locale: locale, scope: scope }
18
25
 
19
26
  if I18n.translate(str, opts.merge(exception_handler: handler)).is_a?(I18n::MissingTranslation)
20
27
  I18n.translate(str, opts.merge(fallback_options(str, locale)))
@@ -25,7 +32,7 @@ module RouteTranslator
25
32
 
26
33
  def translate_string(str, locale, scope)
27
34
  locale = locale.to_s.gsub('native_', '')
28
- translated_resource = translate_resource(str, locale, scope: scope, locale: locale)
35
+ translated_resource = translate_resource(str, locale, scope)
29
36
 
30
37
  URI.escape translated_resource
31
38
  end
@@ -37,18 +44,23 @@ module RouteTranslator
37
44
  #
38
45
  # If the path segment contains something like an optional format
39
46
  # "people(.:format)", only "people" will be translated.
47
+ # If the path contains a hyphenated suffix, it will be translated.
40
48
  # If there is no translation, the path segment is blank, begins with a
41
49
  # ":" (param key) or "*" (wildcard), the segment is returned untouched.
42
50
  def translate(segment, locale, scope)
43
51
  return segment if segment.empty?
44
- named_param, hyphenized = segment.split('-'.freeze, 2) if segment.starts_with?(':'.freeze)
45
- return "#{named_param}-#{translate(hyphenized.dup, locale, scope)}" if hyphenized
52
+
53
+ if segment.starts_with?(':'.freeze)
54
+ named_param, hyphenized = segment.split('-'.freeze, 2)
55
+ return "#{named_param}-#{translate(hyphenized, locale, scope)}" if hyphenized
56
+ end
57
+
46
58
  return segment if segment.starts_with?('('.freeze) || segment.starts_with?('*'.freeze) || segment.include?(':'.freeze)
47
59
 
48
60
  appended_part = segment.slice!(/(\()$/)
49
- match = TRANSLATABLE_SEGMENT.match(segment)[1] if TRANSLATABLE_SEGMENT.match(segment)
61
+ str = translatable_segment(segment)
50
62
 
51
- (translate_string(match, locale, scope) || segment) + appended_part.to_s
63
+ (translate_string(str, locale, scope) || segment) + appended_part.to_s
52
64
  end
53
65
  end
54
66
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module RouteTranslator
2
3
  module Translator
3
4
  module RouteHelpers
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module RouteTranslator
3
- VERSION = '5.1.0'.freeze
3
+ VERSION = '5.2.2'.freeze
4
4
  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: 5.1.0
4
+ version: 5.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geremia Taglialatela
@@ -10,36 +10,48 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-01-24 00:00:00.000000000 Z
13
+ date: 2017-03-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - "~>"
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 5.0.0.1
22
+ - - "<="
20
23
  - !ruby/object:Gem::Version
21
- version: 5.0.0
24
+ version: 5.1.0.beta1
22
25
  type: :runtime
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
25
28
  requirements:
26
- - - "~>"
29
+ - - ">="
27
30
  - !ruby/object:Gem::Version
28
- version: 5.0.0
31
+ version: 5.0.0.1
32
+ - - "<="
33
+ - !ruby/object:Gem::Version
34
+ version: 5.1.0.beta1
29
35
  - !ruby/object:Gem::Dependency
30
36
  name: actionpack
31
37
  requirement: !ruby/object:Gem::Requirement
32
38
  requirements:
33
- - - "~>"
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 5.0.0.1
42
+ - - "<="
34
43
  - !ruby/object:Gem::Version
35
- version: 5.0.0
44
+ version: 5.1.0.beta1
36
45
  type: :runtime
37
46
  prerelease: false
38
47
  version_requirements: !ruby/object:Gem::Requirement
39
48
  requirements:
40
- - - "~>"
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: 5.0.0.1
52
+ - - "<="
41
53
  - !ruby/object:Gem::Version
42
- version: 5.0.0
54
+ version: 5.1.0.beta1
43
55
  - !ruby/object:Gem::Dependency
44
56
  name: appraisal
45
57
  requirement: !ruby/object:Gem::Requirement
@@ -100,16 +112,22 @@ dependencies:
100
112
  name: rails
101
113
  requirement: !ruby/object:Gem::Requirement
102
114
  requirements:
103
- - - "~>"
115
+ - - ">="
104
116
  - !ruby/object:Gem::Version
105
- version: 5.0.0
117
+ version: 5.0.0.1
118
+ - - "<="
119
+ - !ruby/object:Gem::Version
120
+ version: 5.1.0.beta1
106
121
  type: :development
107
122
  prerelease: false
108
123
  version_requirements: !ruby/object:Gem::Requirement
109
124
  requirements:
110
- - - "~>"
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 5.0.0.1
128
+ - - "<="
111
129
  - !ruby/object:Gem::Version
112
- version: 5.0.0
130
+ version: 5.1.0.beta1
113
131
  - !ruby/object:Gem::Dependency
114
132
  name: rake
115
133
  requirement: !ruby/object:Gem::Requirement