i18n-tasks 0.9.29 → 0.9.30

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 955b0b27ee0885fa2860b00848054c1367098e38905fce60ece6f67f35051f78
4
- data.tar.gz: f2e2cd7f950bad6420f831e598a2004f280cf214caf8eab4f046963df47a1ab0
3
+ metadata.gz: c748cb31dcf9a41f13b85f43f0dcad3be53f39ddcff325d41c587c1b32b7812b
4
+ data.tar.gz: bb8f185177f4c0bdd936c45e71827088d12f45a43718d4a3cf1b533ac937343f
5
5
  SHA512:
6
- metadata.gz: 71b276f4b5f20d6c111d1a3078d793d61a22bb4695362c1efbda80c4cb92f93fc59a221e6d5ee6fe48d1601b9eebbf74bc94e66bc8f84dd0549dc92af37ac16e
7
- data.tar.gz: 5a17f8014105c81d9dfe858c5d7f64735e00617455d339cccfbd9fe3a28eca71c2fb527c9117794563be89252260d365b9e4bb09a1f1dde591b00cefca60d849
6
+ metadata.gz: 94d977df364cc0494ea55b19d45a3754503211433a983b4963f17b0617182752d15651b3c636808399d00fadfbbc4bff3aa2098ef398a50e814fdfd9d30488ff
7
+ data.tar.gz: e000d084559176d27f3c1ea6938715e076f6b233d767f3c2ed328ecfe07d2c0deb11feefff4ec10cbc2aad51e807fa4ff883aedd694b41dfd3dbd8aabfc2fe2a
data/README.md CHANGED
@@ -22,7 +22,7 @@ i18n-tasks can be used with any project using the ruby [i18n gem][i18n-gem] (def
22
22
  Add i18n-tasks to the Gemfile:
23
23
 
24
24
  ```ruby
25
- gem 'i18n-tasks', '~> 0.9.29'
25
+ gem 'i18n-tasks', '~> 0.9.30'
26
26
  ```
27
27
 
28
28
  Copy the default [configuration file](#configuration):
@@ -22,7 +22,7 @@ module I18n::Tasks
22
22
  if opts.empty? || method(name).arity.zero?
23
23
  send name
24
24
  else
25
- send name, opts
25
+ send name, **opts
26
26
  end
27
27
  end
28
28
 
@@ -17,10 +17,10 @@ module I18n::Tasks
17
17
  fail CommandError, t('i18n_tasks.health.no_keys_detected') if stats[:key_count].zero?
18
18
  terminal_report.forest_stats forest, stats
19
19
  [
20
- missing(opt),
21
- unused(opt),
22
- check_consistent_interpolations(opt),
23
- check_normalized(opt)
20
+ missing(**opt),
21
+ unused(**opt),
22
+ check_consistent_interpolations(**opt),
23
+ check_normalized(**opt)
24
24
  ].detect { |result| result == :exit_1 }
25
25
  end
26
26
  end
@@ -12,7 +12,7 @@ module I18n::Tasks
12
12
  args: %i[locales out_format]
13
13
 
14
14
  def check_consistent_interpolations(opt = {})
15
- forest = i18n.inconsistent_interpolations(opt.slice(:locales, :base_locale))
15
+ forest = i18n.inconsistent_interpolations(**opt.slice(:locales, :base_locale))
16
16
  print_forest forest, opt, :inconsistent_interpolations
17
17
  :exit_1 unless forest.empty?
18
18
  end
@@ -28,7 +28,7 @@ module I18n::Tasks
28
28
  args: %i[locales out_format missing_types]
29
29
 
30
30
  def missing(opt = {})
31
- forest = i18n.missing_keys(opt.slice(:locales, :base_locale, :types))
31
+ forest = i18n.missing_keys(**opt.slice(:locales, :base_locale, :types))
32
32
  print_forest forest, opt, :missing_keys
33
33
  :exit_1 unless forest.empty?
34
34
  end
@@ -32,7 +32,7 @@ module I18n::Tasks
32
32
  args: %i[locales out_format strict]
33
33
 
34
34
  def unused(opt = {})
35
- forest = i18n.unused_keys(opt.slice(:locales, :strict))
35
+ forest = i18n.unused_keys(**opt.slice(:locales, :strict))
36
36
  print_forest forest, opt, :unused_keys
37
37
  :exit_1 unless forest.empty?
38
38
  end
@@ -43,7 +43,7 @@ module I18n::Tasks
43
43
  args: %i[locales out_format strict keep_order confirm pattern]
44
44
 
45
45
  def remove_unused(opt = {}) # rubocop:disable Metrics/AbcSize
46
- unused_keys = i18n.unused_keys(opt.slice(:locales, :strict))
46
+ unused_keys = i18n.unused_keys(**opt.slice(:locales, :strict))
47
47
 
48
48
  if opt[:pattern]
49
49
  pattern_re = i18n.compile_key_pattern(opt[:pattern])
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'i18n/tasks/data/tree/traversal'
4
4
  require 'i18n/tasks/data/tree/siblings'
5
- require 'i18n/tasks/rainbow_utils'
6
5
  module I18n::Tasks::Data::Tree
7
6
  class Node # rubocop:disable Metrics/ClassLength
8
7
  include Enumerable
@@ -28,7 +27,7 @@ module I18n::Tasks::Data::Tree
28
27
  end
29
28
 
30
29
  def derive(new_attr = {})
31
- self.class.new(attributes.merge(new_attr))
30
+ self.class.new(**attributes.merge(new_attr))
32
31
  end
33
32
 
34
33
  def children=(children)
@@ -164,7 +163,7 @@ module I18n::Tasks::Data::Tree
164
163
 
165
164
  def inspect(level = 0)
166
165
  label = if key.nil?
167
- I18n::Tasks::RainbowUtils.faint_color('∅')
166
+ Rainbow('∅').faint
168
167
  else
169
168
  [Rainbow(key).color(1 + level % 15),
170
169
  (": #{format_value_for_inspect(value)}" if leaf?),
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'i18n/tasks/data/tree/traversal'
4
- require 'i18n/tasks/rainbow_utils'
5
4
  module I18n::Tasks::Data::Tree
6
5
  # A list of nodes
7
6
  class Nodes
@@ -48,7 +47,7 @@ module I18n::Tasks::Data::Tree
48
47
  if present?
49
48
  map(&:inspect) * "\n"
50
49
  else
51
- I18n::Tasks::RainbowUtils.faint_color('{∅}')
50
+ Rainbow('{∅}').faint
52
51
  end
53
52
  end
54
53
 
@@ -273,7 +273,7 @@ module I18n::Tasks::Data::Tree
273
273
  build_forest(opts) do |forest|
274
274
  key_attrs.each do |(full_key, attr)|
275
275
  fail "Invalid key #{full_key.inspect}" if full_key.end_with?('.')
276
- node = ::I18n::Tasks::Data::Tree::Node.new(attr.merge(key: split_key(full_key).last))
276
+ node = ::I18n::Tasks::Data::Tree::Node.new(**attr.merge(key: split_key(full_key).last))
277
277
  yield(full_key, node) if block
278
278
  forest[full_key] = node
279
279
  end
@@ -60,14 +60,12 @@ module I18n::Tasks
60
60
  self
61
61
  end
62
62
 
63
- def key_names(opts = {})
64
- opts[:root] = false unless opts.key?(:root)
65
- keys(opts).map { |key, _node| key }
63
+ def key_names(root: false)
64
+ keys(root: root).map { |key, _node| key }
66
65
  end
67
66
 
68
- def key_values(opts = {})
69
- opts[:root] = false unless opts.key?(:root)
70
- keys(opts).map { |key, node| [key, node.value] }
67
+ def key_values(root: false)
68
+ keys(root: root).map { |key, node| [key, node.value] }
71
69
  end
72
70
 
73
71
  def root_key_values(sort = false)
@@ -146,12 +144,12 @@ module I18n::Tasks
146
144
  # @return [Siblings]
147
145
  def intersect_keys(other_tree, key_opts = {}, &block)
148
146
  if block
149
- select_keys(key_opts) do |key, node|
147
+ select_keys(**key_opts.slice(:root)) do |key, node|
150
148
  other_node = other_tree[key]
151
149
  other_node && yield(key, node, other_node)
152
150
  end
153
151
  else
154
- select_keys(key_opts) { |key, _node| other_tree[key] }
152
+ select_keys(**key_opts.slice(:root)) { |key, _node| other_tree[key] }
155
153
  end
156
154
  end
157
155
 
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'i18n/tasks/reports/base'
4
- require 'i18n/tasks/rainbow_utils'
5
4
  require 'terminal-table'
6
5
  module I18n
7
6
  module Tasks
@@ -76,11 +75,11 @@ module I18n
76
75
 
77
76
  def forest_stats(forest, stats = task.forest_stats(forest))
78
77
  text = if stats[:locale_count] == 1
79
- I18n.t('i18n_tasks.data_stats.text_single_locale', stats)
78
+ I18n.t('i18n_tasks.data_stats.text_single_locale', **stats)
80
79
  else
81
- I18n.t('i18n_tasks.data_stats.text', stats)
80
+ I18n.t('i18n_tasks.data_stats.text', **stats)
82
81
  end
83
- title = Rainbow(I18n.t('i18n_tasks.data_stats.title', stats.slice(:locales))).bright
82
+ title = Rainbow(I18n.t('i18n_tasks.data_stats.title', **stats.slice(:locales))).bright
84
83
  print_info "#{Rainbow(title).cyan} #{Rainbow(text).cyan}"
85
84
  end
86
85
 
@@ -170,7 +169,7 @@ module I18n
170
169
  end
171
170
 
172
171
  def print_title(title)
173
- log_stderr "#{Rainbow(title.strip).bright} #{I18n::Tasks::RainbowUtils.faint_color('|')} " \
172
+ log_stderr "#{Rainbow(title.strip).bright} #{Rainbow('|').faint} " \
174
173
  "#{"i18n-tasks v#{I18n::Tasks::VERSION}"}"
175
174
  end
176
175
 
@@ -12,7 +12,7 @@ module I18n::Tasks::Scanners
12
12
  include OccurrenceFromPosition
13
13
  include RubyKeyLiterals
14
14
 
15
- TRANSLATE_CALL_RE = /(?<=^|[^\w'\-.]|[^\w'\-]I18n\.|I18n\.)t(?:ranslate)?/
15
+ TRANSLATE_CALL_RE = /(?<=^|[^\w'\-.]|[^\w'\-]I18n\.|I18n\.)t(?:!|ranslate!?)?/
16
16
  IGNORE_LINES = {
17
17
  'coffee' => /^\s*#(?!\si18n-tasks-use)/,
18
18
  'erb' => /^\s*<%\s*#(?!\si18n-tasks-use)/,
@@ -15,10 +15,10 @@ module I18n::Tasks::Scanners
15
15
  include AST::Sexp
16
16
 
17
17
  MAGIC_COMMENT_PREFIX = /\A.\s*i18n-tasks-use\s+/
18
- RECEIVER_MESSAGES = [nil, AST::Node.new(:const, [nil, :I18n])].product(%i[t translate])
18
+ RECEIVER_MESSAGES = [nil, AST::Node.new(:const, [nil, :I18n])].product(%i[t t! translate translate!])
19
19
 
20
20
  def initialize(**args)
21
- super(args)
21
+ super(**args)
22
22
  @parser = ::Parser::CurrentRuby.new
23
23
  @magic_comment_parser = ::Parser::CurrentRuby.new
24
24
  @call_finder = RubyAstCallFinder.new(
@@ -2,6 +2,6 @@
2
2
 
3
3
  module I18n
4
4
  module Tasks
5
- VERSION = '0.9.29'
5
+ VERSION = '0.9.30'
6
6
  end
7
7
  end
@@ -2,10 +2,11 @@
2
2
 
3
3
  require 'i18n/tasks'
4
4
 
5
- RSpec.describe 'I18n' do
5
+ RSpec.describe I18n do
6
6
  let(:i18n) { I18n::Tasks::BaseTask.new }
7
7
  let(:missing_keys) { i18n.missing_keys }
8
8
  let(:unused_keys) { i18n.unused_keys }
9
+ let(:inconsistent_interpolations) { i18n.inconsistent_interpolations }
9
10
 
10
11
  it 'does not have missing keys' do
11
12
  expect(missing_keys).to be_empty,
@@ -21,7 +22,13 @@ RSpec.describe 'I18n' do
21
22
  non_normalized = i18n.non_normalized_paths
22
23
  error_message = "The following files need to be normalized:\n" \
23
24
  "#{non_normalized.map { |path| " #{path}" }.join("\n")}\n" \
24
- 'Please run `i18n-tasks normalize` to fix'
25
+ "Please run `i18n-tasks normalize' to fix"
25
26
  expect(non_normalized).to be_empty, error_message
26
27
  end
28
+
29
+ it 'does not have inconsistent interpolations' do
30
+ error_message = "#{inconsistent_interpolations.leaves.count} i18n keys have inconsistent interpolations.\n" \
31
+ "Run `i18n-tasks check-consistent-interpolations' to show them"
32
+ expect(inconsistent_interpolations).to be_empty, error_message
33
+ end
27
34
  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.29
4
+ version: 0.9.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-31 00:00:00.000000000 Z
11
+ date: 2020-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -340,7 +340,6 @@ files:
340
340
  - lib/i18n/tasks/logging.rb
341
341
  - lib/i18n/tasks/missing_keys.rb
342
342
  - lib/i18n/tasks/plural_keys.rb
343
- - lib/i18n/tasks/rainbow_utils.rb
344
343
  - lib/i18n/tasks/references.rb
345
344
  - lib/i18n/tasks/reports/base.rb
346
345
  - lib/i18n/tasks/reports/terminal.rb
@@ -399,7 +398,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
399
398
  - !ruby/object:Gem::Version
400
399
  version: '0'
401
400
  requirements: []
402
- rubygems_version: 3.0.2
401
+ rubygems_version: 3.1.2
403
402
  signing_key:
404
403
  specification_version: 4
405
404
  summary: Manage localization and translation with the awesome power of static analysis
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module I18n
4
- module Tasks
5
- module RainbowUtils
6
- # TODO: This method can be removed after below PR is released.
7
- # https://github.com/sickill/rainbow/pull/53
8
- def self.faint_color(str)
9
- presenter = Rainbow(str)
10
- return presenter unless Rainbow.enabled
11
- Rainbow::Presenter.new(Rainbow::StringUtils.wrap_with_sgr(presenter, [2]))
12
- end
13
- end
14
- end
15
- end