missing_t 0.3.0 → 0.3.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.
- data/Gemfile.lock +1 -1
- data/bin/missing_t +25 -9
- data/lib/missing_t.rb +9 -27
- data/spec/missing_t_spec.rb +3 -3
- metadata +4 -4
data/Gemfile.lock
CHANGED
data/bin/missing_t
CHANGED
@@ -4,16 +4,32 @@ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
|
|
4
4
|
|
5
5
|
require 'missing_t'
|
6
6
|
|
7
|
-
|
7
|
+
def hashify(strings)
|
8
|
+
strings.map { |s| s.split('.') }.each_with_object({}) do |segmented_string, h|
|
9
|
+
segmented_string.each do |segment|
|
10
|
+
h[segment] ||= {}
|
11
|
+
h = h[segment]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
8
15
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
puts
|
14
|
-
puts "#{file}:"
|
15
|
-
puts
|
16
|
-
queries.each { |q| puts " #{red(q)}" }
|
16
|
+
def print_hash(h, level)
|
17
|
+
h.each_pair do |k,v|
|
18
|
+
puts %(#{" " * (level*2)}#{k}:)
|
19
|
+
print_hash(v, level+1)
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
23
|
+
missing_t = MissingT.new
|
24
|
+
missing_t.parse_options(ARGV)
|
25
|
+
missing_message_strings = missing_t.find_missing_translations(ARGV.first).values.map { |ms| hashify(ms) }
|
26
|
+
|
27
|
+
missing = missing_message_strings.each_with_object({}) do |h, all_message_strings|
|
28
|
+
all_message_strings.deep_safe_merge!(h)
|
29
|
+
end
|
30
|
+
|
31
|
+
missing.each do |language, missing_for_language|
|
32
|
+
puts
|
33
|
+
puts "#{language}:"
|
34
|
+
print_hash(missing_for_language, 1)
|
35
|
+
end
|
data/lib/missing_t.rb
CHANGED
@@ -52,7 +52,7 @@ end
|
|
52
52
|
|
53
53
|
class MissingT
|
54
54
|
|
55
|
-
VERSION = "0.3.
|
55
|
+
VERSION = "0.3.1"
|
56
56
|
|
57
57
|
include Helpers
|
58
58
|
extend Forwardable
|
@@ -81,7 +81,7 @@ class MissingT
|
|
81
81
|
end
|
82
82
|
|
83
83
|
opts.on_tail("--version", "Show version") do
|
84
|
-
puts
|
84
|
+
puts VERSION
|
85
85
|
exit
|
86
86
|
end
|
87
87
|
|
@@ -108,19 +108,6 @@ class MissingT
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
def hashify(strings)
|
112
|
-
h = Hash.new
|
113
|
-
strings.map { |s| s.split('.') }.
|
114
|
-
each do |segmented_string|
|
115
|
-
root = h
|
116
|
-
segmented_string.each do |segment|
|
117
|
-
root[segment] ||= {}
|
118
|
-
root = root[segment]
|
119
|
-
end
|
120
|
-
end
|
121
|
-
h
|
122
|
-
end
|
123
|
-
|
124
111
|
def translations_in_file(yaml_file)
|
125
112
|
open(yaml_file) { |f| YAML.load(f.read) }
|
126
113
|
end
|
@@ -152,14 +139,12 @@ class MissingT
|
|
152
139
|
end
|
153
140
|
|
154
141
|
def collect_translation_queries
|
155
|
-
|
156
|
-
files_with_i18n_queries.each do |file|
|
142
|
+
files_with_i18n_queries.each_with_object({}) do |file, queries|
|
157
143
|
queries_in_file = extract_i18n_queries(file)
|
158
|
-
|
144
|
+
if queries_in_file.any?
|
159
145
|
queries[file] = queries_in_file
|
160
146
|
end
|
161
147
|
end
|
162
|
-
queries
|
163
148
|
#TODO: remove duplicate queries across files
|
164
149
|
end
|
165
150
|
|
@@ -172,21 +157,18 @@ class MissingT
|
|
172
157
|
true
|
173
158
|
end
|
174
159
|
|
175
|
-
def get_missing_translations(queries,
|
176
|
-
|
177
|
-
|
178
|
-
languages.each do |l|
|
179
|
-
get_missing_translations_for_lang(queries, l).each do |file, qs|
|
160
|
+
def get_missing_translations(queries, languages)
|
161
|
+
languages.each_with_object({}) do |lang, missing|
|
162
|
+
get_missing_translations_for_lang(queries, lang).each do |file, queries|
|
180
163
|
missing[file] ||= []
|
181
|
-
missing[file].concat(
|
164
|
+
missing[file].concat(queries).uniq!
|
182
165
|
end
|
183
166
|
end
|
184
|
-
missing
|
185
167
|
end
|
186
168
|
|
187
169
|
def find_missing_translations(lang=nil)
|
188
170
|
collect_translations
|
189
|
-
get_missing_translations(collect_translation_queries, lang)
|
171
|
+
get_missing_translations(collect_translation_queries, lang ? [lang] : translations.keys)
|
190
172
|
end
|
191
173
|
|
192
174
|
private
|
data/spec/missing_t_spec.rb
CHANGED
@@ -188,7 +188,7 @@ describe "MissingT" do
|
|
188
188
|
@missing_t.has_translation?("fr", "zoo.bee").should == false
|
189
189
|
@missing_t.has_translation?("es", "mother").should == false
|
190
190
|
end
|
191
|
-
|
191
|
+
|
192
192
|
describe "of dynamic message strings" do
|
193
193
|
it "should return true if it has a translation that matches the fix parts" do
|
194
194
|
@missing_t.has_translation?("fr", %q(zoo.#{animal})).should == true
|
@@ -196,7 +196,7 @@ describe "MissingT" do
|
|
196
196
|
|
197
197
|
it "should return false if it does not have a translation that matches all the fix parts" do
|
198
198
|
@missing_t.has_translation?("fr", %q(household.#{animal})).should == false
|
199
|
-
end
|
199
|
+
end
|
200
200
|
end
|
201
201
|
|
202
202
|
it "should correctly get missing translations for a spec. language" do
|
@@ -214,4 +214,4 @@ describe "MissingT" do
|
|
214
214
|
end
|
215
215
|
end
|
216
216
|
|
217
|
-
end
|
217
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: missing_t
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -148,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
148
148
|
version: '0'
|
149
149
|
segments:
|
150
150
|
- 0
|
151
|
-
hash:
|
151
|
+
hash: -311353985734395445
|
152
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
153
|
none: false
|
154
154
|
requirements:
|
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
157
|
version: '0'
|
158
158
|
segments:
|
159
159
|
- 0
|
160
|
-
hash:
|
160
|
+
hash: -311353985734395445
|
161
161
|
requirements: []
|
162
162
|
rubyforge_project:
|
163
163
|
rubygems_version: 1.8.23
|