i18n-tasks 0.9.12 → 0.9.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -8
- data/Rakefile +1 -0
- data/i18n-tasks.gemspec +2 -1
- data/lib/i18n/tasks.rb +2 -1
- data/lib/i18n/tasks/base_task.rb +1 -0
- data/lib/i18n/tasks/cli.rb +4 -3
- data/lib/i18n/tasks/command/collection.rb +1 -0
- data/lib/i18n/tasks/command/commander.rb +1 -0
- data/lib/i18n/tasks/command/commands/data.rb +6 -5
- data/lib/i18n/tasks/command/commands/eq_base.rb +2 -1
- data/lib/i18n/tasks/command/commands/health.rb +2 -1
- data/lib/i18n/tasks/command/commands/meta.rb +2 -1
- data/lib/i18n/tasks/command/commands/missing.rb +2 -1
- data/lib/i18n/tasks/command/commands/tree.rb +5 -4
- data/lib/i18n/tasks/command/commands/usages.rb +9 -8
- data/lib/i18n/tasks/command/commands/xlsx.rb +2 -1
- data/lib/i18n/tasks/command/dsl.rb +1 -0
- data/lib/i18n/tasks/command/option_parsers/enum.rb +1 -0
- data/lib/i18n/tasks/command/option_parsers/locale.rb +2 -1
- data/lib/i18n/tasks/command/options/common.rb +1 -0
- data/lib/i18n/tasks/command/options/data.rb +1 -0
- data/lib/i18n/tasks/command/options/locales.rb +1 -0
- data/lib/i18n/tasks/command_error.rb +1 -0
- data/lib/i18n/tasks/commands.rb +1 -1
- data/lib/i18n/tasks/configuration.rb +1 -0
- data/lib/i18n/tasks/console_context.rb +9 -10
- data/lib/i18n/tasks/data.rb +1 -0
- data/lib/i18n/tasks/data/adapter/json_adapter.rb +1 -0
- data/lib/i18n/tasks/data/adapter/yaml_adapter.rb +1 -0
- data/lib/i18n/tasks/data/file_formats.rb +1 -0
- data/lib/i18n/tasks/data/file_system.rb +1 -0
- data/lib/i18n/tasks/data/file_system_base.rb +1 -0
- data/lib/i18n/tasks/data/router/conservative_router.rb +1 -0
- data/lib/i18n/tasks/data/router/pattern_router.rb +1 -0
- data/lib/i18n/tasks/data/tree/node.rb +5 -4
- data/lib/i18n/tasks/data/tree/nodes.rb +2 -1
- data/lib/i18n/tasks/data/tree/siblings.rb +1 -0
- data/lib/i18n/tasks/data/tree/traversal.rb +1 -0
- data/lib/i18n/tasks/google_translation.rb +1 -0
- data/lib/i18n/tasks/html_keys.rb +1 -0
- data/lib/i18n/tasks/ignore_keys.rb +1 -0
- data/lib/i18n/tasks/key_pattern_matching.rb +1 -0
- data/lib/i18n/tasks/locale_list.rb +1 -0
- data/lib/i18n/tasks/locale_pathname.rb +1 -0
- data/lib/i18n/tasks/logging.rb +5 -6
- data/lib/i18n/tasks/missing_keys.rb +1 -0
- data/lib/i18n/tasks/plural_keys.rb +1 -0
- data/lib/i18n/tasks/rainbow_utils.rb +15 -0
- data/lib/i18n/tasks/references.rb +1 -0
- data/lib/i18n/tasks/reports/base.rb +1 -0
- data/lib/i18n/tasks/reports/spreadsheet.rb +2 -1
- data/lib/i18n/tasks/reports/terminal.rb +33 -31
- data/lib/i18n/tasks/scanners/file_scanner.rb +1 -0
- data/lib/i18n/tasks/scanners/files/caching_file_finder.rb +1 -0
- data/lib/i18n/tasks/scanners/files/caching_file_finder_provider.rb +1 -0
- data/lib/i18n/tasks/scanners/files/caching_file_reader.rb +1 -0
- data/lib/i18n/tasks/scanners/files/file_finder.rb +1 -0
- data/lib/i18n/tasks/scanners/files/file_reader.rb +1 -0
- data/lib/i18n/tasks/scanners/occurrence_from_position.rb +1 -0
- data/lib/i18n/tasks/scanners/pattern_mapper.rb +1 -0
- data/lib/i18n/tasks/scanners/pattern_scanner.rb +1 -0
- data/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb +1 -0
- data/lib/i18n/tasks/scanners/relative_keys.rb +1 -0
- data/lib/i18n/tasks/scanners/results/key_occurrences.rb +1 -0
- data/lib/i18n/tasks/scanners/results/occurrence.rb +1 -0
- data/lib/i18n/tasks/scanners/ruby_ast_call_finder.rb +1 -0
- data/lib/i18n/tasks/scanners/ruby_ast_scanner.rb +3 -2
- data/lib/i18n/tasks/scanners/ruby_key_literals.rb +1 -0
- data/lib/i18n/tasks/scanners/scanner.rb +1 -0
- data/lib/i18n/tasks/scanners/scanner_multiplexer.rb +1 -0
- data/lib/i18n/tasks/split_key.rb +1 -0
- data/lib/i18n/tasks/stats.rb +1 -0
- data/lib/i18n/tasks/string_interpolation.rb +1 -0
- data/lib/i18n/tasks/unused_keys.rb +3 -2
- data/lib/i18n/tasks/used_keys.rb +3 -2
- data/lib/i18n/tasks/version.rb +2 -1
- data/templates/rspec/i18n_spec.rb +1 -0
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 414af08a4707037cdb353bba1ed426fd44852906
|
4
|
+
data.tar.gz: 986fd27c576e0763f1980ba70fa45e7cad81ce95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cd51331aa6e088f79d0d06d28c88b1b32b5321c25af2821c638639ebf40ea28b121ad1ac056f37d1ace4e702589282df29957d9e0be9877fc444b97e31daa39
|
7
|
+
data.tar.gz: 46339dd43fcb62d8630bb348df8ceee774d90ced3eab072f0565e66df1ae426228ad81e5584b28e3d346e5bac81f2f4988c04879ca594d63c74175d3e8b59e38
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# i18n-tasks [![Build Status][badge-travis]][travis] [![Coverage Status][badge-coverage]][coverage] [![Code Climate][badge-code-climate]][code-climate] [![Gemnasium][badge-gemnasium]][gemnasium] [![Gitter](https://badges.gitter.im/Join
|
1
|
+
# i18n-tasks [![Build Status][badge-travis]][travis] [![Coverage Status][badge-coverage]][coverage] [![Code Climate][badge-code-climate]][code-climate] [![Gemnasium][badge-gemnasium]][gemnasium] [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/glebm/i18n-tasks?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
2
2
|
|
3
3
|
<a href='https://pledgie.com/campaigns/28570'><img alt='Click here to lend your support to: i18n-tasks for Ruby and make a donation at pledgie.com !' src='https://pledgie.com/campaigns/28570.png?skin_name=chrome' border='0' ></a>
|
4
4
|
|
@@ -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.
|
27
|
+
gem 'i18n-tasks', '~> 0.9.13'
|
28
28
|
```
|
29
29
|
|
30
30
|
Copy the default [configuration file](#configuration):
|
@@ -354,13 +354,9 @@ translation:
|
|
354
354
|
|
355
355
|
`i18n-tasks irb` starts an IRB session in i18n-tasks context. Type `guide` for more information.
|
356
356
|
|
357
|
-
###
|
357
|
+
### Import / export to a CSV spreadsheet
|
358
358
|
|
359
|
-
|
360
|
-
|
361
|
-
```console
|
362
|
-
$ i18n-tasks xlsx-report
|
363
|
-
```
|
359
|
+
See [i18n-tasks wiki: CSV import and export tasks](https://github.com/glebm/i18n-tasks/wiki/Custom-CSV-import-and-export-tasks).
|
364
360
|
|
365
361
|
## Add new tasks
|
366
362
|
|
data/Rakefile
CHANGED
data/i18n-tasks.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'i18n/tasks/version'
|
@@ -41,7 +42,7 @@ TEXT
|
|
41
42
|
s.add_dependency 'highline', '>= 1.7.3'
|
42
43
|
s.add_dependency 'i18n'
|
43
44
|
s.add_dependency 'parser', '>= 2.2.3.0'
|
44
|
-
s.add_dependency '
|
45
|
+
s.add_dependency 'rainbow', '~> 2.2'
|
45
46
|
s.add_dependency 'terminal-table', '>= 1.5.1'
|
46
47
|
s.add_development_dependency 'axlsx', '~> 2.0'
|
47
48
|
s.add_development_dependency 'bundler', '~> 1.3'
|
data/lib/i18n/tasks.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
# define all the modules to be able to use ::
|
3
4
|
module I18n
|
4
5
|
module Tasks
|
@@ -55,7 +56,7 @@ rescue LoadError => _e
|
|
55
56
|
# activesupport ~> 2.3.2
|
56
57
|
require 'active_support/core_ext/try'
|
57
58
|
end
|
58
|
-
require '
|
59
|
+
require 'rainbow'
|
59
60
|
require 'erubis'
|
60
61
|
|
61
62
|
require 'i18n/tasks/version'
|
data/lib/i18n/tasks/base_task.rb
CHANGED
data/lib/i18n/tasks/cli.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'i18n/tasks'
|
3
4
|
require 'i18n/tasks/commands'
|
4
5
|
require 'optparse'
|
@@ -197,10 +198,10 @@ class I18n::Tasks::CLI
|
|
197
198
|
end
|
198
199
|
|
199
200
|
def auto_output_coloring(coloring = ENV['I18N_TASKS_COLOR'] || STDOUT.isatty)
|
200
|
-
coloring_was
|
201
|
-
|
201
|
+
coloring_was = Rainbow.enabled
|
202
|
+
Rainbow.enabled = coloring
|
202
203
|
yield
|
203
204
|
ensure
|
204
|
-
|
205
|
+
Rainbow.enabled = coloring_was
|
205
206
|
end
|
206
207
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
module Command
|
4
5
|
module Commands
|
@@ -13,7 +14,7 @@ module I18n::Tasks
|
|
13
14
|
cmd :normalize,
|
14
15
|
pos: '[locale ...]',
|
15
16
|
desc: t('i18n_tasks.cmd.desc.normalize'),
|
16
|
-
args:
|
17
|
+
args: %i(locales pattern_router)
|
17
18
|
|
18
19
|
def normalize(opt = {})
|
19
20
|
i18n.normalize_store! opt[:locales], opt[:pattern_router]
|
@@ -48,7 +49,7 @@ module I18n::Tasks
|
|
48
49
|
cmd :data,
|
49
50
|
pos: '[locale ...]',
|
50
51
|
desc: t('i18n_tasks.cmd.desc.data'),
|
51
|
-
args:
|
52
|
+
args: %i(locales out_format)
|
52
53
|
|
53
54
|
def data(opt = {})
|
54
55
|
print_forest i18n.data_forest(opt[:locales]), opt
|
@@ -57,7 +58,7 @@ module I18n::Tasks
|
|
57
58
|
cmd :data_merge,
|
58
59
|
pos: '[tree ...]',
|
59
60
|
desc: t('i18n_tasks.cmd.desc.data_merge'),
|
60
|
-
args:
|
61
|
+
args: %i(data_format nostdin)
|
61
62
|
|
62
63
|
def data_merge(opt = {})
|
63
64
|
forest = merge_forests_stdin_and_pos!(opt)
|
@@ -68,7 +69,7 @@ module I18n::Tasks
|
|
68
69
|
cmd :data_write,
|
69
70
|
pos: '[tree]',
|
70
71
|
desc: t('i18n_tasks.cmd.desc.data_write'),
|
71
|
-
args:
|
72
|
+
args: %i(data_format nostdin)
|
72
73
|
|
73
74
|
def data_write(opt = {})
|
74
75
|
forest = forest_pos_or_stdin!(opt)
|
@@ -79,7 +80,7 @@ module I18n::Tasks
|
|
79
80
|
cmd :data_remove,
|
80
81
|
pos: '[tree]',
|
81
82
|
desc: t('i18n_tasks.cmd.desc.data_remove'),
|
82
|
-
args:
|
83
|
+
args: %i(data_format nostdin)
|
83
84
|
|
84
85
|
def data_remove(opt = {})
|
85
86
|
removed = i18n.data.remove_by_key!(forest_pos_or_stdin!(opt))
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
module Command
|
4
5
|
module Commands
|
@@ -8,7 +9,7 @@ module I18n::Tasks
|
|
8
9
|
cmd :eq_base,
|
9
10
|
pos: '[locale ...]',
|
10
11
|
desc: t('i18n_tasks.cmd.desc.eq_base'),
|
11
|
-
args:
|
12
|
+
args: %i(locales out_format)
|
12
13
|
|
13
14
|
def eq_base(opt = {})
|
14
15
|
print_forest i18n.eq_base_keys(opt), opt, :eq_base_keys
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
module Command
|
4
5
|
module Commands
|
@@ -8,7 +9,7 @@ module I18n::Tasks
|
|
8
9
|
cmd :health,
|
9
10
|
pos: '[locale ...]',
|
10
11
|
desc: t('i18n_tasks.cmd.desc.health'),
|
11
|
-
args:
|
12
|
+
args: %i(locales out_format)
|
12
13
|
|
13
14
|
def health(opt = {})
|
14
15
|
forest = i18n.data_forest(opt[:locales])
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
module Command
|
4
5
|
module Commands
|
@@ -14,7 +15,7 @@ module I18n::Tasks
|
|
14
15
|
cfg = cfg.slice(*opts[:arguments]) if opts[:arguments].present?
|
15
16
|
cfg = cfg.to_yaml
|
16
17
|
cfg.sub!(/\A---\n/, '')
|
17
|
-
cfg.gsub!(/^([^\s-].+?:)/,
|
18
|
+
cfg.gsub!(/^([^\s-].+?:)/, Rainbow('\1').cyan.bright)
|
18
19
|
puts cfg
|
19
20
|
end
|
20
21
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'i18n/tasks/command/collection'
|
3
4
|
|
4
5
|
module I18n::Tasks
|
@@ -24,7 +25,7 @@ module I18n::Tasks
|
|
24
25
|
cmd :missing,
|
25
26
|
pos: '[locale ...]',
|
26
27
|
desc: t('i18n_tasks.cmd.desc.missing'),
|
27
|
-
args:
|
28
|
+
args: %i(locales out_format missing_types)
|
28
29
|
|
29
30
|
def missing(opt = {})
|
30
31
|
forest = i18n.missing_keys(opt.slice(:locales, :base_locale, :missing_types))
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
module Command
|
4
5
|
module Commands
|
@@ -19,7 +20,7 @@ module I18n::Tasks
|
|
19
20
|
cmd :tree_merge,
|
20
21
|
pos: '[[tree] [tree] ... (or stdin)]',
|
21
22
|
desc: t('i18n_tasks.cmd.desc.tree_merge'),
|
22
|
-
args:
|
23
|
+
args: %i(data_format nostdin)
|
23
24
|
|
24
25
|
def tree_merge(opts = {})
|
25
26
|
print_forest merge_forests_stdin_and_pos!(opts), opts
|
@@ -28,7 +29,7 @@ module I18n::Tasks
|
|
28
29
|
cmd :tree_filter,
|
29
30
|
pos: '[pattern] [tree (or stdin)]',
|
30
31
|
desc: t('i18n_tasks.cmd.desc.tree_filter'),
|
31
|
-
args:
|
32
|
+
args: %i(data_format pattern)
|
32
33
|
|
33
34
|
def tree_filter(opts = {})
|
34
35
|
pattern = arg_or_pos! :pattern, opts
|
@@ -74,7 +75,7 @@ module I18n::Tasks
|
|
74
75
|
cmd :tree_subtract,
|
75
76
|
pos: '[[tree] [tree] ... (or stdin)]',
|
76
77
|
desc: t('i18n_tasks.cmd.desc.tree_subtract'),
|
77
|
-
args:
|
78
|
+
args: %i(data_format nostdin)
|
78
79
|
|
79
80
|
def tree_subtract(opt = {})
|
80
81
|
forests = forests_stdin_and_pos! opt, 2
|
@@ -85,7 +86,7 @@ module I18n::Tasks
|
|
85
86
|
cmd :tree_set_value,
|
86
87
|
pos: '[VALUE] [tree (or stdin)]',
|
87
88
|
desc: t('i18n_tasks.cmd.desc.tree_set_value'),
|
88
|
-
args:
|
89
|
+
args: %i(value data_format nostdin pattern)
|
89
90
|
|
90
91
|
def tree_set_value(opt = {})
|
91
92
|
value = arg_or_pos! :value, opt
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
module Command
|
4
5
|
module Commands
|
@@ -12,7 +13,7 @@ module I18n::Tasks
|
|
12
13
|
cmd :find,
|
13
14
|
pos: '[pattern]',
|
14
15
|
desc: t('i18n_tasks.cmd.desc.find'),
|
15
|
-
args:
|
16
|
+
args: %i(out_format pattern strict)
|
16
17
|
|
17
18
|
def find(opt = {})
|
18
19
|
opt[:filter] ||= opt.delete(:pattern) || opt[:arguments].try(:first)
|
@@ -23,7 +24,7 @@ module I18n::Tasks
|
|
23
24
|
cmd :unused,
|
24
25
|
pos: '[locale ...]',
|
25
26
|
desc: t('i18n_tasks.cmd.desc.unused'),
|
26
|
-
args:
|
27
|
+
args: %i(locales out_format strict)
|
27
28
|
|
28
29
|
def unused(opt = {})
|
29
30
|
forest = i18n.unused_keys(opt.slice(:locales, :strict))
|
@@ -34,7 +35,7 @@ module I18n::Tasks
|
|
34
35
|
cmd :remove_unused,
|
35
36
|
pos: '[locale ...]',
|
36
37
|
desc: t('i18n_tasks.cmd.desc.remove_unused'),
|
37
|
-
args:
|
38
|
+
args: %i(locales out_format strict confirm)
|
38
39
|
|
39
40
|
def remove_unused(opt = {})
|
40
41
|
unused_keys = i18n.unused_keys(opt.slice(:locales, :strict))
|
@@ -45,7 +46,7 @@ module I18n::Tasks
|
|
45
46
|
log_stderr t('i18n_tasks.remove_unused.removed', count: unused_keys.leaves.count)
|
46
47
|
print_forest removed, opt
|
47
48
|
else
|
48
|
-
log_stderr
|
49
|
+
log_stderr Rainbow(t('i18n_tasks.remove_unused.noop')).green.bright
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
@@ -53,11 +54,11 @@ module I18n::Tasks
|
|
53
54
|
|
54
55
|
def confirm_remove_unused!(unused_keys, opt)
|
55
56
|
return if ENV['CONFIRM'] || opt[:confirm]
|
56
|
-
locales =
|
57
|
+
locales = Rainbow(unused_keys.flat_map { |root| root.key.split('+') }.sort.uniq * ', ').bright
|
57
58
|
msg = [
|
58
|
-
|
59
|
-
|
60
|
-
|
59
|
+
Rainbow(t('i18n_tasks.remove_unused.confirm', count: unused_keys.leaves.count, locales: locales)).red,
|
60
|
+
Rainbow(t('i18n_tasks.common.continue_q')).yellow,
|
61
|
+
Rainbow('(yes/no)').yellow
|
61
62
|
].join(' ')
|
62
63
|
exit 1 unless agree msg
|
63
64
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
module Command
|
4
5
|
module Commands
|
@@ -16,7 +17,7 @@ module I18n::Tasks
|
|
16
17
|
require 'axlsx'
|
17
18
|
rescue LoadError
|
18
19
|
message = %(For spreadsheet report please add axlsx gem to Gemfile:\ngem 'axlsx', '~> 2.0')
|
19
|
-
log_stderr
|
20
|
+
log_stderr Rainbow(message).red.bright
|
20
21
|
exit 1
|
21
22
|
end
|
22
23
|
spreadsheet_report.save_report opt[:path], opt.except(:path)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
module Command
|
4
5
|
module OptionParsers
|
@@ -39,7 +40,7 @@ module I18n::Tasks
|
|
39
40
|
if vals == %w(all) || vals.blank?
|
40
41
|
context.locales
|
41
42
|
else
|
42
|
-
move_base_locale_to_front!
|
43
|
+
move_base_locale_to_front!(vals.map { |v| v == 'base' ? context.base_locale : v }, context.base_locale)
|
43
44
|
end.tap do |locales|
|
44
45
|
locales.each { |locale| validate! locale }
|
45
46
|
end
|
data/lib/i18n/tasks/commands.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'i18n/tasks/command/dsl'
|
3
4
|
require 'i18n/tasks/command/collection'
|
4
5
|
require 'i18n/tasks/command/commands/health'
|
@@ -23,7 +24,6 @@ module I18n::Tasks
|
|
23
24
|
include Command::Commands::Meta
|
24
25
|
include Command::Commands::XLSX
|
25
26
|
|
26
|
-
include Term::ANSIColor
|
27
27
|
require 'highline/import'
|
28
28
|
end
|
29
29
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module I18n::Tasks
|
3
4
|
class ConsoleContext < BaseTask
|
4
5
|
def to_s
|
@@ -28,21 +29,19 @@ module I18n::Tasks
|
|
28
29
|
module Messages
|
29
30
|
module_function
|
30
31
|
|
31
|
-
extend Term::ANSIColor
|
32
|
-
|
33
32
|
def banner
|
34
|
-
|
33
|
+
Rainbow("i18n-tasks v#{I18n::Tasks::VERSION} IRB").bright + "\nType #{Rainbow('guide').green} to learn more"
|
35
34
|
end
|
36
35
|
|
37
36
|
def guide
|
38
|
-
|
39
|
-
#{
|
37
|
+
Rainbow('i18n-tasks IRB Quick Start guide').green.bright + "\n" + <<-TEXT
|
38
|
+
#{Rainbow('Data as trees').yellow}
|
40
39
|
tree(locale)
|
41
40
|
used_tree(key_filter: nil, strict: nil)
|
42
41
|
unused_tree(locale: base_locale, strict: nil)
|
43
42
|
build_tree('es' => {'hello' => 'Hola'})
|
44
43
|
|
45
|
-
#{
|
44
|
+
#{Rainbow('Traversal').yellow}
|
46
45
|
tree = missing_diff_tree('es')
|
47
46
|
tree.nodes { |node| }
|
48
47
|
tree.nodes.to_a
|
@@ -50,23 +49,23 @@ module I18n::Tasks
|
|
50
49
|
tree.each { |root_node| }
|
51
50
|
# also levels, depth_first, and breadth_first
|
52
51
|
|
53
|
-
#{
|
52
|
+
#{Rainbow('Select nodes').yellow}
|
54
53
|
tree.select_nodes { |node| } # new tree with only selected nodes
|
55
54
|
|
56
|
-
#{
|
55
|
+
#{Rainbow('Match by full key').yellow}
|
57
56
|
tree.select_keys { |key, leaf| } # new tree with only selected keys
|
58
57
|
tree.grep_keys(/hello/) # grep, using ===
|
59
58
|
tree.keys { |key, leaf| } # enumerate over [full_key, leaf_node]
|
60
59
|
# Pass {root: true} to include root node in full_key (usually locale)
|
61
60
|
|
62
|
-
#{
|
61
|
+
#{Rainbow('Nodes').yellow}
|
63
62
|
node = node(key, locale)
|
64
63
|
node.key # only the part after the last dot
|
65
64
|
node.full_key # full key. Includes root key, pass {root: false} to override.
|
66
65
|
# also: value, value_or_children_hash, data, walk_to_root, walk_from_root
|
67
66
|
Tree::Node.new(key: 'en')
|
68
67
|
|
69
|
-
#{
|
68
|
+
#{Rainbow('Keys').yellow}
|
70
69
|
t(key, locale)
|
71
70
|
key_value?(key, locale)
|
72
71
|
depluralize_key(key, locale) # convert 'hat.one' to 'hat'
|