i18n-tasks 0.7.0 → 0.7.1
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 +4 -4
- data/CHANGES.md +19 -0
- data/README.md +1 -1
- data/lib/i18n/tasks/command/options/enum_opt.rb +4 -2
- data/lib/i18n/tasks/data/file_formats.rb +5 -14
- data/lib/i18n/tasks/plural_keys.rb +12 -4
- data/lib/i18n/tasks/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1adbf899220bdaffacd8f8b95f74eb2c102268a6
|
4
|
+
data.tar.gz: 028937e7d90a8af43ad66497a0b3f869c52fb599
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16ee9ac1ea60d4ed1d04881d9c40fdc88478c16c9d0471d8b94d31a77a2a44e915b4236ad8d13a7c3517d40e7179ff9909c5215f828b8d193b19b61b59ee0747
|
7
|
+
data.tar.gz: 025e2fee7f5590377e4b8ddfb2cec98256e45ff120ef5219d545064d745a23430b15cd071683edf0aa44618e22cdb3b78073be13c1c64a826e18e958db5cc4b7
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
## 0.7.1
|
2
|
+
|
3
|
+
* 1.9.3 compatibility
|
4
|
+
|
5
|
+
## 0.7.0
|
6
|
+
|
7
|
+
New tasks:
|
8
|
+
|
9
|
+
* `i18n-tasks health` to display missing and unused keys along with other information
|
10
|
+
* `i18n-tasks tree-` to manipulate trees
|
11
|
+
* `i18n-tasks data-` to look up and manipulate locale data
|
12
|
+
* Better `help` for all commands
|
13
|
+
* Minor bug fixes
|
14
|
+
|
15
|
+
Internally:
|
16
|
+
|
17
|
+
* Refactored commands DSL
|
18
|
+
* `add-missing`, `remove-unused` implemented in terms of the new `tree-` commands
|
19
|
+
|
1
20
|
## 0.6.3
|
2
21
|
|
3
22
|
* Strict mode added for `unused` and `remove-unused`. When passed `-s` or `--strict`, these tasks will not attempt to infer dynamic key usages, such as `t("category.#{category.key}")`.
|
data/README.md
CHANGED
@@ -2,8 +2,6 @@ module I18n::Tasks
|
|
2
2
|
module Command
|
3
3
|
module Options
|
4
4
|
module EnumOpt
|
5
|
-
delegate :enum_opt, to: :class
|
6
|
-
|
7
5
|
DEFAULT_ENUM_OPT_ERROR = proc { |bad, good|
|
8
6
|
I18n.t('i18n_tasks.cmd.enum_opt.invalid_one', invalid: bad, valid: good * ', ')
|
9
7
|
}
|
@@ -38,6 +36,10 @@ module I18n::Tasks
|
|
38
36
|
raise CommandError.new error_msg.call(invalid, valid)
|
39
37
|
end
|
40
38
|
end
|
39
|
+
|
40
|
+
def enum_opt(*args)
|
41
|
+
self.class.enum_opt(*args)
|
42
|
+
end
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
@@ -9,8 +9,6 @@ module I18n
|
|
9
9
|
base.extend ClassMethods
|
10
10
|
end
|
11
11
|
|
12
|
-
delegate :adapter_for_path, :adapter_by_name, :adapter_name, :adapter_names, to: :class
|
13
|
-
|
14
12
|
def adapter_dump(tree, format)
|
15
13
|
adapter_op :dump, format, tree, write_config(format)
|
16
14
|
end
|
@@ -20,7 +18,7 @@ module I18n
|
|
20
18
|
end
|
21
19
|
|
22
20
|
def adapter_op(op, format, tree, config)
|
23
|
-
adapter_by_name(format).send(op, tree, config)
|
21
|
+
self.class.adapter_by_name(format).send(op, tree, config)
|
24
22
|
rescue Exception => e
|
25
23
|
raise CommandError.new("#{format} #{op} error: #{e.message}")
|
26
24
|
end
|
@@ -36,14 +34,13 @@ module I18n
|
|
36
34
|
end
|
37
35
|
|
38
36
|
def load_file(path)
|
39
|
-
|
40
|
-
adapter.parse ::File.read(path), read_config(adapter_name(adapter))
|
37
|
+
adapter_parse ::File.read(path), self.class.adapter_name_for_path(path)
|
41
38
|
end
|
42
39
|
|
43
40
|
def write_tree(path, tree)
|
44
41
|
::FileUtils.mkpath(File.dirname path)
|
45
42
|
::File.open(path, 'w') { |f|
|
46
|
-
f.write
|
43
|
+
f.write adapter_dump(tree.to_hash, self.class.adapter_name_for_path(path))
|
47
44
|
}
|
48
45
|
end
|
49
46
|
|
@@ -54,22 +51,16 @@ module I18n
|
|
54
51
|
(@fn_patterns ||= []) << [name, pattern, adapter]
|
55
52
|
end
|
56
53
|
|
57
|
-
def
|
54
|
+
def adapter_name_for_path(path)
|
58
55
|
@fn_patterns.detect { |(_name, pattern, _adapter)|
|
59
56
|
::File.fnmatch(pattern, path)
|
60
|
-
}.try(:
|
57
|
+
}.try(:first) or raise CommandError.new("Adapter not found for #{path}. Registered adapters: #{@fn_patterns.inspect}")
|
61
58
|
end
|
62
59
|
|
63
60
|
def adapter_names
|
64
61
|
@fn_patterns.map(&:first)
|
65
62
|
end
|
66
63
|
|
67
|
-
def adapter_name(adapter)
|
68
|
-
@fn_patterns.detect { |(adapter_name, _pattern, registered_adapter)|
|
69
|
-
registered_adapter == adapter
|
70
|
-
}.try(:first) or raise CommandError.new("Adapter #{adapter.inspect} is not registered. Registered adapters: #{@fn_patterns.inspect}")
|
71
|
-
end
|
72
|
-
|
73
64
|
def adapter_by_name(name)
|
74
65
|
name = name.to_s
|
75
66
|
@fn_patterns.detect { |(adapter_name, _pattern, _adapter)|
|
@@ -5,12 +5,12 @@ module I18n::Tasks::PluralKeys
|
|
5
5
|
PLURAL_KEY_RE = /\.(?:#{PLURAL_KEY_SUFFIXES.to_a * '|'})$/
|
6
6
|
|
7
7
|
def collapse_plural_nodes!(tree)
|
8
|
-
tree.leaves.
|
8
|
+
tree.leaves.map(&:parent).compact.uniq.each do |node|
|
9
9
|
children = node.children
|
10
|
-
if
|
10
|
+
if plural_forms?(children)
|
11
11
|
node.value = children.to_hash
|
12
|
-
node.data.merge!(children.first.data)
|
13
12
|
node.children = nil
|
13
|
+
node.data.merge! children.first.data
|
14
14
|
end
|
15
15
|
end
|
16
16
|
tree
|
@@ -23,10 +23,18 @@ module I18n::Tasks::PluralKeys
|
|
23
23
|
return key if key !~ PLURAL_KEY_RE
|
24
24
|
parent_key = split_key(key)[0..-2] * '.'
|
25
25
|
nodes = tree("#{locale}.#{parent_key}").presence || (locale != base_locale && tree("#{base_locale}.#{parent_key}"))
|
26
|
-
if nodes && nodes
|
26
|
+
if nodes && plural_forms?(nodes)
|
27
27
|
parent_key
|
28
28
|
else
|
29
29
|
key
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
def plural_forms?(s)
|
34
|
+
s.present? && s.all? { |node| node.leaf? && plural_suffix?(node.key) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def plural_suffix?(key)
|
38
|
+
PLURAL_KEY_SUFFIXES.include?(key)
|
39
|
+
end
|
32
40
|
end
|
data/lib/i18n/tasks/version.rb
CHANGED
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.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glebm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erubis
|