i18n-tasks 0.9.15 → 0.9.16

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: 7cc5711c56c707bafd3ee3c344220c54976c2a7a
4
- data.tar.gz: 8d90bbc68292fd2ee20a843f1770013542cd50bc
3
+ metadata.gz: d0cac577152584d62e48767e77416aa559bed589
4
+ data.tar.gz: 5b981968e66f977fd24c8d2d16fc840614d88146
5
5
  SHA512:
6
- metadata.gz: 71bcef7b28fe7a5ad8fcd0b0c3c69d13b15e279cd288b07616999234faea165c84c8bba2860fc76353366c7242746210264cabedc46f63ea8111c397b173db85
7
- data.tar.gz: a603c30adaa7d37be7439bc9063da2d41406cce3a2021bbff4f6f655bb4e699ce5c72a1bc3797a997eb92fa056f0f14e55285f3c0ea57efd9a6b6a5c5bcebc29
6
+ metadata.gz: '09b634136cd5a68aa0f37c5b272cf55bda9880181e68c173d1247acb5c629c825317b0aea9e64f5a09387e1ae4c87813d4988c930dfa07f0d088f616b6da165d'
7
+ data.tar.gz: 78d5153233fd8050e9394761010fb11344bdfc84f0d2f6786a2d016026e1027938a3b625a686e004f988bb6551aad3ae677ea8584c7356a09f01266807903e48
data/README.md CHANGED
@@ -24,7 +24,7 @@ i18n-tasks can be used with any project using the ruby [i18n gem][i18n-gem] (def
24
24
  Add i18n-tasks to the Gemfile:
25
25
 
26
26
  ```ruby
27
- gem 'i18n-tasks', '~> 0.9.15'
27
+ gem 'i18n-tasks', '~> 0.9.16'
28
28
  ```
29
29
 
30
30
  Copy the default [configuration file](#configuration):
@@ -224,6 +224,11 @@ all the dynamic parts of the key will be considered used, e.g. `cats.tenderlove.
224
224
  Note that only one section of the key is treated as a wildcard for each string interpolation; i.e. in this example,
225
225
  `cats.tenderlove.special.name` *will* be reported as unused.
226
226
 
227
+ #### I18n.localize
228
+
229
+ `I18n.localize` is not supported, use [i18n-tasks-use hints](#fine-tuning).
230
+ This is because the key generated by `I18n.localize` depends on the type of the object passed in and thus cannot be inferred statically.
231
+
227
232
  ## Configuration
228
233
 
229
234
  Configuration is read from `config/i18n-tasks.yml` or `config/i18n-tasks.yml.erb`.
@@ -95,13 +95,17 @@ module I18n::Tasks
95
95
  end
96
96
  end
97
97
 
98
- INTERPOLATION_KEY_RE = /%\{[^}]+\}/
98
+ INTERPOLATION_KEY_RE = /%\{[^}]+}/
99
99
  UNTRANSLATABLE_STRING = 'zxzxzx'
100
100
 
101
101
  # @param [String] value
102
102
  # @return [String] 'hello, %{name}' => 'hello, <round-trippable string>'
103
103
  def replace_interpolations(value)
104
- value.gsub INTERPOLATION_KEY_RE, UNTRANSLATABLE_STRING
104
+ i = -1
105
+ value.gsub INTERPOLATION_KEY_RE do
106
+ i += 1
107
+ "#{UNTRANSLATABLE_STRING}#{i}"
108
+ end
105
109
  end
106
110
 
107
111
  # @param [String] untranslated
@@ -109,8 +113,17 @@ module I18n::Tasks
109
113
  # @return [String] 'hello, <round-trippable string>' => 'hello, %{name}'
110
114
  def restore_interpolations(untranslated, translated)
111
115
  return translated if untranslated !~ INTERPOLATION_KEY_RE
112
- each_value = untranslated.scan(INTERPOLATION_KEY_RE).to_enum
113
- translated.gsub(Regexp.new(UNTRANSLATABLE_STRING, Regexp::IGNORECASE)) { each_value.next }
116
+ values = untranslated.scan(INTERPOLATION_KEY_RE)
117
+ translated.gsub(/#{Regexp.escape(UNTRANSLATABLE_STRING)}\d+/i) do |m|
118
+ values[m[UNTRANSLATABLE_STRING.length..-1].to_i]
119
+ end
120
+ rescue StandardError => e
121
+ raise CommandError.new(e, <<-TEXT.strip)
122
+ Error when restoring interpolations:
123
+ original: "#{untranslated}"
124
+ response: "#{translated}"
125
+ error: #{e.message} (#{e.class.name})
126
+ TEXT
114
127
  end
115
128
  end
116
129
  end
@@ -117,9 +117,9 @@ module I18n::Tasks::Scanners
117
117
  node.children[0].to_s
118
118
  elsif %i[true false].include?(node.type)
119
119
  node.type.to_s
120
- elsif :nil == node.type
120
+ elsif node.type == :nil
121
121
  ''
122
- elsif :array == node.type && array_join_with
122
+ elsif node.type == :array && array_join_with
123
123
  extract_array_as_string(
124
124
  node,
125
125
  array_join_with: array_join_with,
@@ -154,7 +154,7 @@ module I18n::Tasks::Scanners
154
154
  else
155
155
  # ignore dynamic argument in strict mode
156
156
  return nil if config[:strict]
157
- if %i[dsym dstr].include?(child.type) || (:array == child.type && array_flatten)
157
+ if %i[dsym dstr].include?(child.type) || (child.type == :array && array_flatten)
158
158
  extract_string(child, array_join_with: array_join_with)
159
159
  else
160
160
  "\#{#{child.loc.expression.source}}"
@@ -15,8 +15,8 @@ module I18n::Tasks::Scanners
15
15
  # @param literal [String] e.g: "key", 'key', or :key.
16
16
  # @return [String] key
17
17
  def strip_literal(literal)
18
- literal = literal[1..-1] if ':' == literal[0]
19
- literal = literal[1..-2] if "'" == literal[0] || '"' == literal[0]
18
+ literal = literal[1..-1] if literal[0] == ':'
19
+ literal = literal[1..-2] if literal[0] == "'" || literal[0] == '"'
20
20
  literal
21
21
  end
22
22
 
@@ -124,7 +124,7 @@ module I18n::Tasks
124
124
 
125
125
  # @return [Boolean] whether the key is potentially used in a code expression such as `t("category.#{category_key}")`
126
126
  def used_in_expr?(key)
127
- !!(key =~ expr_key_re) # rubocop:disable Style/DoubleNegation,Style/InverseMethods
127
+ !!(key =~ expr_key_re) # rubocop:disable Style/DoubleNegation
128
128
  end
129
129
 
130
130
  private
@@ -2,6 +2,6 @@
2
2
 
3
3
  module I18n
4
4
  module Tasks
5
- VERSION = '0.9.15'
5
+ VERSION = '0.9.16'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n-tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.15
4
+ version: 0.9.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-02 00:00:00.000000000 Z
11
+ date: 2017-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -354,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
354
354
  version: '0'
355
355
  requirements: []
356
356
  rubyforge_project:
357
- rubygems_version: 2.6.11
357
+ rubygems_version: 2.6.12
358
358
  signing_key:
359
359
  specification_version: 4
360
360
  summary: Manage localization and translation with the awesome power of static analysis