babelyoda 2.1.20 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG +1 -0
- data/LICENSE +1 -1
- data/README.md +2 -1
- data/babelyoda.gemspec +1 -1
- data/lib/babelyoda.rb +34 -11
- data/lib/babelyoda/length_checker.rb +67 -0
- data/lib/babelyoda/length_checker_params.rb +10 -0
- data/lib/babelyoda/specification.rb +1 -0
- data/lib/babelyoda/version.rb +1 -1
- data/spec/lib/babelyoda/length_checker_spec.rb +106 -0
- data/templates/Babelfile.erb +5 -0
- metadata +31 -49
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a0347f2782ffb4abd2e513b84f86015ed1d0a4ff
|
4
|
+
data.tar.gz: 4393ec8e01b4b536f34dbf90ab0195550c1259d3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7f9e9a76f375f4419b78b7fe46b833e6a86145db2f5f965e2d62a91bf3c873ab86e754b3e57c669bcb546259762f0f1401c7c0b497b3701e39e90e942411a0c8
|
7
|
+
data.tar.gz: 79671401dbaa7345b650501ced99e265f5572c1feeeefe5d6336e35f07cf7d8041d1ea81b5f8f83984863c0f8c85620b67073120f5fa312142c21117eaa89122
|
data/CHANGELOG
CHANGED
@@ -3,3 +3,4 @@ v1.4.0. Better command line options handling + Bugfixes.
|
|
3
3
|
v1.5.0. Fixed a major bug in localization of XIB files.
|
4
4
|
v2.0.0. Full re-write. Yay!
|
5
5
|
v2.1.14. Fix merging of pluralized keys: translated values are now preserved correctly.
|
6
|
+
v2.2.0. Add a task checking for long translations.
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -20,7 +20,8 @@ The following people contributed patches, made suggestions or made otherwise hel
|
|
20
20
|
|
21
21
|
* [Ivan Moskalev](https://github.com/ivanmoskalev)
|
22
22
|
* [Alexander Denisov](https://github.com/StoneSpb)
|
23
|
+
* [Mikhail Chupin](https://github.com/ilmarion)
|
23
24
|
|
24
25
|
## Copyright
|
25
26
|
|
26
|
-
Copyright (c) 2010-
|
27
|
+
Copyright (c) 2010-2016 Andrey Subbotin. See LICENSE for details.
|
data/babelyoda.gemspec
CHANGED
@@ -5,7 +5,7 @@ require "babelyoda/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "babelyoda"
|
7
7
|
s.version = Babelyoda::VERSION
|
8
|
-
s.authors = ["Andrey Subbotin", "Ivan Moskalev", "Alexander Denisov"]
|
8
|
+
s.authors = ["Andrey Subbotin", "Ivan Moskalev", "Alexander Denisov", "Mikhail Chupin"]
|
9
9
|
s.email = ["andrey@subbotin.me"]
|
10
10
|
s.homepage = "http://github.com/eploko/babelyoda"
|
11
11
|
s.summary = "Xcode project localization made easy"
|
data/lib/babelyoda.rb
CHANGED
@@ -8,6 +8,8 @@ require_relative 'babelyoda/git'
|
|
8
8
|
require_relative 'babelyoda/ibtool'
|
9
9
|
require_relative 'babelyoda/keyset'
|
10
10
|
require_relative 'babelyoda/localization_key'
|
11
|
+
require_relative 'babelyoda/length_checker'
|
12
|
+
require_relative 'babelyoda/length_checker_params'
|
11
13
|
require_relative 'babelyoda/localization_value'
|
12
14
|
require_relative 'babelyoda/logger'
|
13
15
|
require_relative 'babelyoda/rake'
|
@@ -247,17 +249,7 @@ namespace :babelyoda do
|
|
247
249
|
|
248
250
|
desc "Verifies all local translations are present"
|
249
251
|
task :verify do
|
250
|
-
combined_keyset =
|
251
|
-
spec.strings_files.each do |filename|
|
252
|
-
dev_lang_strings = Babelyoda::Strings.new(filename, spec.development_language).read
|
253
|
-
combined_keyset.merge!(dev_lang_strings)
|
254
|
-
spec.localization_languages.each do |language|
|
255
|
-
lang_strings = Babelyoda::Strings.new(File.localized(filename, language), language).read
|
256
|
-
combined_keyset.merge!(lang_strings)
|
257
|
-
end
|
258
|
-
end
|
259
|
-
combined_keyset.drop_empty!
|
260
|
-
|
252
|
+
combined_keyset = combined_keyset(spec, 'babelyoda.verify')
|
261
253
|
count = {}
|
262
254
|
spec.all_languages.each { |lang| count[lang.to_sym] = 0}
|
263
255
|
|
@@ -281,6 +273,23 @@ namespace :babelyoda do
|
|
281
273
|
end
|
282
274
|
exit 1 unless all_found
|
283
275
|
end
|
276
|
+
|
277
|
+
desc "Checks localizations length"
|
278
|
+
task :check_localizations_length do
|
279
|
+
combined_keyset = combined_keyset(spec, 'babelyoda.check_length')
|
280
|
+
dev_lang = spec.development_language.to_sym
|
281
|
+
params = spec.length_checker_params
|
282
|
+
checker = Babelyoda::LengthChecker.new(dev_lang, params)
|
283
|
+
checker.long_translations(combined_keyset).each_pair do |lang, translations|
|
284
|
+
$logger.warn lang.to_s
|
285
|
+
translations.each do |t|
|
286
|
+
$logger.warn "/* #{t.context} */"
|
287
|
+
$logger.warn "'#{t.text}' >>> '#{t.dev_text}'"
|
288
|
+
$logger.warn ""
|
289
|
+
end
|
290
|
+
$logger.warn ""
|
291
|
+
end
|
292
|
+
end
|
284
293
|
|
285
294
|
namespace :remote do
|
286
295
|
|
@@ -321,3 +330,17 @@ def strings_filename(keyset_name, lang)
|
|
321
330
|
File.join("#{lang}.lproj", "#{keyset_name}.strings")
|
322
331
|
end
|
323
332
|
end
|
333
|
+
|
334
|
+
def combined_keyset(spec, keyset_name)
|
335
|
+
keyset = Babelyoda::Keyset.new(keyset_name)
|
336
|
+
spec.strings_files.each do |filename|
|
337
|
+
dev_lang_strings = Babelyoda::Strings.new(filename, spec.development_language).read
|
338
|
+
keyset.merge!(dev_lang_strings)
|
339
|
+
spec.localization_languages.each do |language|
|
340
|
+
lang_strings = Babelyoda::Strings.new(File.localized(filename, language), language).read
|
341
|
+
keyset.merge!(lang_strings)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
keyset.drop_empty!
|
345
|
+
keyset
|
346
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Babelyoda
|
2
|
+
class LengthChecker
|
3
|
+
def initialize(dev_language, params)
|
4
|
+
@dev_language = dev_language
|
5
|
+
@params = params
|
6
|
+
end
|
7
|
+
|
8
|
+
def long_translations(keyset)
|
9
|
+
long_translations = {}
|
10
|
+
|
11
|
+
keyset.keys.each_value do |key|
|
12
|
+
dev_value = key.values[@dev_language]
|
13
|
+
dev_text = longest_translation(dev_value)
|
14
|
+
dev_len = dev_text.length.to_f
|
15
|
+
|
16
|
+
key.values.each_value do |value|
|
17
|
+
text = longest_translation(value)
|
18
|
+
len = text.nil? ? 0 : text.length
|
19
|
+
ratio = len/dev_len
|
20
|
+
big_ratio = ratio >= @params.ratio
|
21
|
+
big_delta = (len - dev_len) >= @params.delta
|
22
|
+
|
23
|
+
if big_ratio && big_delta
|
24
|
+
lang = value.language.to_sym
|
25
|
+
translation = Babelyoda::LongTranslation.new(dev_text, text, key.context)
|
26
|
+
if long_translations.has_key?(lang)
|
27
|
+
long_translations[lang].push(translation)
|
28
|
+
else
|
29
|
+
long_translations[lang] = [translation]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
long_translations
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def longest_translation(localizaition_value)
|
40
|
+
if localizaition_value.plural?
|
41
|
+
translation = localizaition_value.text.values.max_by {|str| str.nil? ? 0 : str.length}
|
42
|
+
else
|
43
|
+
translation = localizaition_value.text
|
44
|
+
end
|
45
|
+
translation
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class LongTranslation
|
50
|
+
attr_accessor :dev_text
|
51
|
+
attr_accessor :text
|
52
|
+
attr_accessor :context
|
53
|
+
|
54
|
+
def initialize(dev_text, text, context)
|
55
|
+
@dev_text = dev_text
|
56
|
+
@text = text
|
57
|
+
@context = context
|
58
|
+
end
|
59
|
+
|
60
|
+
def ==(other_obj)
|
61
|
+
dev_texts_equal = @dev_text == other_obj.dev_text
|
62
|
+
texts_equal = @text == other_obj.text
|
63
|
+
contexts_equal = @context == other_obj.context
|
64
|
+
dev_texts_equal && texts_equal && contexts_equal
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/babelyoda/version.rb
CHANGED
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'babelyoda/keyset'
|
2
|
+
require 'babelyoda/length_checker'
|
3
|
+
require 'babelyoda/length_checker_params'
|
4
|
+
require 'babelyoda/strings_lexer'
|
5
|
+
require 'babelyoda/strings_parser'
|
6
|
+
|
7
|
+
describe "length checker" do
|
8
|
+
before(:example) do
|
9
|
+
@ratio = 2
|
10
|
+
@delta = 3
|
11
|
+
@params = Babelyoda::LengthCheckerParams.new()
|
12
|
+
@params.ratio = @ratio
|
13
|
+
@params.delta = @delta
|
14
|
+
@dev_lang = :dev_lang
|
15
|
+
@lang1 = :lang1
|
16
|
+
@lang2 = :lang2
|
17
|
+
@checker = Babelyoda::LengthChecker.new(@dev_lang, @params)
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "finding long translations in keyset" do
|
21
|
+
def add_lang_strings_to_keyset(lang, strings, keyset)
|
22
|
+
lexer = Babelyoda::StringsLexer.new
|
23
|
+
parser = Babelyoda::StringsParser.new(lexer, lang)
|
24
|
+
parser.parse(strings) do |record|
|
25
|
+
keyset.merge_key!(record)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def generate_keyset(dev_str, lang1_str, lang2_str)
|
30
|
+
keyset = Babelyoda::Keyset.new("test_keyset")
|
31
|
+
add_lang_strings_to_keyset(@dev_lang, dev_str, keyset)
|
32
|
+
add_lang_strings_to_keyset(@lang1, lang1_str, keyset)
|
33
|
+
add_lang_strings_to_keyset(@lang2, lang2_str, keyset)
|
34
|
+
keyset
|
35
|
+
end
|
36
|
+
|
37
|
+
it "doesn't find anything in empty keyset" do
|
38
|
+
empty_keyset = Babelyoda::Keyset.new("empty_keyset")
|
39
|
+
|
40
|
+
expect(@checker.long_translations(empty_keyset)).to be_empty
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when has only non-plural keys" do
|
44
|
+
it "finds long translations" do
|
45
|
+
dev_str = <<-EOF
|
46
|
+
/* comment hi */
|
47
|
+
"Hi" = "Hi";
|
48
|
+
/* comment hello */
|
49
|
+
"Hello" = "Hello";
|
50
|
+
EOF
|
51
|
+
|
52
|
+
lang1_str = <<-EOF
|
53
|
+
/* comment hi */
|
54
|
+
"Hi" = "HiHi";
|
55
|
+
/* comment hello */
|
56
|
+
"Hello" = "HelloHello";
|
57
|
+
EOF
|
58
|
+
|
59
|
+
lang2_str = <<-EOF
|
60
|
+
/* comment hi */
|
61
|
+
"Hi" = "HiHiHiHi";
|
62
|
+
/* comment hello */
|
63
|
+
"Hello" = "HelloHelloHello";
|
64
|
+
EOF
|
65
|
+
|
66
|
+
keyset = generate_keyset(dev_str, lang1_str, lang2_str)
|
67
|
+
lang1_hello_problem = Babelyoda::LongTranslation.new("Hello", "HelloHello", "comment hello")
|
68
|
+
lang2_hi_problem = Babelyoda::LongTranslation.new("Hi", "HiHiHiHi", "comment hi")
|
69
|
+
lang2_hello_problem = Babelyoda::LongTranslation.new("Hello", "HelloHelloHello", "comment hello")
|
70
|
+
expected = {}
|
71
|
+
expected[@lang1] = [lang1_hello_problem]
|
72
|
+
expected[@lang2] = [lang2_hi_problem, lang2_hello_problem]
|
73
|
+
|
74
|
+
expect(@checker.long_translations(keyset)).to eq(expected)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context "when has plural keys" do
|
79
|
+
it "compares longest plural variants" do
|
80
|
+
dev_str = <<-EOF
|
81
|
+
/* comment min */
|
82
|
+
"%[one]u min" = "min";
|
83
|
+
"%[many]u min" = "minutes";
|
84
|
+
EOF
|
85
|
+
|
86
|
+
lang1_str = <<-EOF
|
87
|
+
/* comment min */
|
88
|
+
"%[one]u min" = "minminmin";
|
89
|
+
"%[many]u min" = "minutes";
|
90
|
+
EOF
|
91
|
+
|
92
|
+
lang2_str = <<-EOF
|
93
|
+
/* comment min */
|
94
|
+
"%[one]u min" = "minminmin";
|
95
|
+
"%[many]u min" = "minutesminutes";
|
96
|
+
EOF
|
97
|
+
|
98
|
+
keyset = generate_keyset(dev_str, lang1_str, lang2_str)
|
99
|
+
lang2_problem = Babelyoda::LongTranslation.new("minutes", "minutesminutes", "comment min")
|
100
|
+
expected = {@lang2 => [lang2_problem]}
|
101
|
+
|
102
|
+
expect(@checker.long_translations(keyset)).to eq(expected)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
data/templates/Babelfile.erb
CHANGED
@@ -24,4 +24,9 @@ Babelyoda::Specification.new do |s|
|
|
24
24
|
s.resources_folder = 'Resources'
|
25
25
|
s.xib_files = FileList['{Classes,Resources}/**/en.lproj/*.{xib}']
|
26
26
|
s.strings_files = FileList['{Classes,Resources}/**/en.lproj/*.{strings}']
|
27
|
+
|
28
|
+
s.length_checker_params = Babelyoda::LengthCheckerParams.new do |p|
|
29
|
+
p.ratio = 1.5
|
30
|
+
p.delta = 10
|
31
|
+
end
|
27
32
|
end
|
metadata
CHANGED
@@ -1,212 +1,192 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: babelyoda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Andrey Subbotin
|
9
8
|
- Ivan Moskalev
|
10
9
|
- Alexander Denisov
|
10
|
+
- Mikhail Chupin
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2016-10-14 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
19
|
requirements:
|
21
|
-
- -
|
20
|
+
- - '>='
|
22
21
|
- !ruby/object:Gem::Version
|
23
22
|
version: '0'
|
24
23
|
type: :development
|
25
24
|
prerelease: false
|
26
25
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
26
|
requirements:
|
29
|
-
- -
|
27
|
+
- - '>='
|
30
28
|
- !ruby/object:Gem::Version
|
31
29
|
version: '0'
|
32
30
|
- !ruby/object:Gem::Dependency
|
33
31
|
name: guard
|
34
32
|
requirement: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
33
|
requirements:
|
37
|
-
- -
|
34
|
+
- - '>='
|
38
35
|
- !ruby/object:Gem::Version
|
39
36
|
version: '0'
|
40
37
|
type: :development
|
41
38
|
prerelease: false
|
42
39
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
40
|
requirements:
|
45
|
-
- -
|
41
|
+
- - '>='
|
46
42
|
- !ruby/object:Gem::Version
|
47
43
|
version: '0'
|
48
44
|
- !ruby/object:Gem::Dependency
|
49
45
|
name: guard-rspec
|
50
46
|
requirement: !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
47
|
requirements:
|
53
|
-
- -
|
48
|
+
- - '>='
|
54
49
|
- !ruby/object:Gem::Version
|
55
50
|
version: '0'
|
56
51
|
type: :development
|
57
52
|
prerelease: false
|
58
53
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
54
|
requirements:
|
61
|
-
- -
|
55
|
+
- - '>='
|
62
56
|
- !ruby/object:Gem::Version
|
63
57
|
version: '0'
|
64
58
|
- !ruby/object:Gem::Dependency
|
65
59
|
name: ruby_gntp
|
66
60
|
requirement: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
61
|
requirements:
|
69
|
-
- -
|
62
|
+
- - '>='
|
70
63
|
- !ruby/object:Gem::Version
|
71
64
|
version: '0'
|
72
65
|
type: :development
|
73
66
|
prerelease: false
|
74
67
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
68
|
requirements:
|
77
|
-
- -
|
69
|
+
- - '>='
|
78
70
|
- !ruby/object:Gem::Version
|
79
71
|
version: '0'
|
80
72
|
- !ruby/object:Gem::Dependency
|
81
73
|
name: awesome_print
|
82
74
|
requirement: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
75
|
requirements:
|
85
76
|
- - ~>
|
86
77
|
- !ruby/object:Gem::Version
|
87
78
|
version: '1.0'
|
88
|
-
- -
|
79
|
+
- - '>='
|
89
80
|
- !ruby/object:Gem::Version
|
90
81
|
version: 1.0.2
|
91
82
|
type: :runtime
|
92
83
|
prerelease: false
|
93
84
|
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
85
|
requirements:
|
96
86
|
- - ~>
|
97
87
|
- !ruby/object:Gem::Version
|
98
88
|
version: '1.0'
|
99
|
-
- -
|
89
|
+
- - '>='
|
100
90
|
- !ruby/object:Gem::Version
|
101
91
|
version: 1.0.2
|
102
92
|
- !ruby/object:Gem::Dependency
|
103
93
|
name: rake
|
104
94
|
requirement: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
95
|
requirements:
|
107
96
|
- - ~>
|
108
97
|
- !ruby/object:Gem::Version
|
109
98
|
version: '0.9'
|
110
|
-
- -
|
99
|
+
- - '>='
|
111
100
|
- !ruby/object:Gem::Version
|
112
101
|
version: 0.9.2.2
|
113
102
|
type: :runtime
|
114
103
|
prerelease: false
|
115
104
|
version_requirements: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
105
|
requirements:
|
118
106
|
- - ~>
|
119
107
|
- !ruby/object:Gem::Version
|
120
108
|
version: '0.9'
|
121
|
-
- -
|
109
|
+
- - '>='
|
122
110
|
- !ruby/object:Gem::Version
|
123
111
|
version: 0.9.2.2
|
124
112
|
- !ruby/object:Gem::Dependency
|
125
113
|
name: rchardet19
|
126
114
|
requirement: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
115
|
requirements:
|
129
116
|
- - ~>
|
130
117
|
- !ruby/object:Gem::Version
|
131
118
|
version: '1.3'
|
132
|
-
- -
|
119
|
+
- - '>='
|
133
120
|
- !ruby/object:Gem::Version
|
134
121
|
version: 1.3.5
|
135
122
|
type: :runtime
|
136
123
|
prerelease: false
|
137
124
|
version_requirements: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
125
|
requirements:
|
140
126
|
- - ~>
|
141
127
|
- !ruby/object:Gem::Version
|
142
128
|
version: '1.3'
|
143
|
-
- -
|
129
|
+
- - '>='
|
144
130
|
- !ruby/object:Gem::Version
|
145
131
|
version: 1.3.5
|
146
132
|
- !ruby/object:Gem::Dependency
|
147
133
|
name: builder
|
148
134
|
requirement: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
135
|
requirements:
|
151
136
|
- - ~>
|
152
137
|
- !ruby/object:Gem::Version
|
153
138
|
version: '3.0'
|
154
|
-
- -
|
139
|
+
- - '>='
|
155
140
|
- !ruby/object:Gem::Version
|
156
141
|
version: 3.0.0
|
157
142
|
type: :runtime
|
158
143
|
prerelease: false
|
159
144
|
version_requirements: !ruby/object:Gem::Requirement
|
160
|
-
none: false
|
161
145
|
requirements:
|
162
146
|
- - ~>
|
163
147
|
- !ruby/object:Gem::Version
|
164
148
|
version: '3.0'
|
165
|
-
- -
|
149
|
+
- - '>='
|
166
150
|
- !ruby/object:Gem::Version
|
167
151
|
version: 3.0.0
|
168
152
|
- !ruby/object:Gem::Dependency
|
169
153
|
name: nokogiri
|
170
154
|
requirement: !ruby/object:Gem::Requirement
|
171
|
-
none: false
|
172
155
|
requirements:
|
173
156
|
- - ~>
|
174
157
|
- !ruby/object:Gem::Version
|
175
158
|
version: '1.5'
|
176
|
-
- -
|
159
|
+
- - '>='
|
177
160
|
- !ruby/object:Gem::Version
|
178
161
|
version: 1.5.5
|
179
162
|
type: :runtime
|
180
163
|
prerelease: false
|
181
164
|
version_requirements: !ruby/object:Gem::Requirement
|
182
|
-
none: false
|
183
165
|
requirements:
|
184
166
|
- - ~>
|
185
167
|
- !ruby/object:Gem::Version
|
186
168
|
version: '1.5'
|
187
|
-
- -
|
169
|
+
- - '>='
|
188
170
|
- !ruby/object:Gem::Version
|
189
171
|
version: 1.5.5
|
190
172
|
- !ruby/object:Gem::Dependency
|
191
173
|
name: log4r
|
192
174
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
175
|
requirements:
|
195
176
|
- - ~>
|
196
177
|
- !ruby/object:Gem::Version
|
197
178
|
version: '1'
|
198
|
-
- -
|
179
|
+
- - '>='
|
199
180
|
- !ruby/object:Gem::Version
|
200
181
|
version: 1.1.10
|
201
182
|
type: :runtime
|
202
183
|
prerelease: false
|
203
184
|
version_requirements: !ruby/object:Gem::Requirement
|
204
|
-
none: false
|
205
185
|
requirements:
|
206
186
|
- - ~>
|
207
187
|
- !ruby/object:Gem::Version
|
208
188
|
version: '1'
|
209
|
-
- -
|
189
|
+
- - '>='
|
210
190
|
- !ruby/object:Gem::Version
|
211
191
|
version: 1.1.10
|
212
192
|
description: A simple utility to push/pull l10n resources of an Xcode project to/from
|
@@ -234,6 +214,8 @@ files:
|
|
234
214
|
- lib/babelyoda/git_versions.rb
|
235
215
|
- lib/babelyoda/ibtool.rb
|
236
216
|
- lib/babelyoda/keyset.rb
|
217
|
+
- lib/babelyoda/length_checker.rb
|
218
|
+
- lib/babelyoda/length_checker_params.rb
|
237
219
|
- lib/babelyoda/localization_key.rb
|
238
220
|
- lib/babelyoda/localization_value.rb
|
239
221
|
- lib/babelyoda/logger.rb
|
@@ -249,6 +231,7 @@ files:
|
|
249
231
|
- lib/babelyoda/version.rb
|
250
232
|
- lib/babelyoda/xib.rb
|
251
233
|
- spec/lib/babelyoda/keyset_spec.rb
|
234
|
+
- spec/lib/babelyoda/length_checker_spec.rb
|
252
235
|
- spec/lib/babelyoda/localization_key_spec.rb
|
253
236
|
- spec/lib/babelyoda/localization_value_spec.rb
|
254
237
|
- spec/lib/babelyoda/specification_spec.rb
|
@@ -260,26 +243,25 @@ files:
|
|
260
243
|
- templates/Babelfile.erb
|
261
244
|
homepage: http://github.com/eploko/babelyoda
|
262
245
|
licenses: []
|
246
|
+
metadata: {}
|
263
247
|
post_install_message:
|
264
248
|
rdoc_options: []
|
265
249
|
require_paths:
|
266
250
|
- lib
|
267
251
|
required_ruby_version: !ruby/object:Gem::Requirement
|
268
|
-
none: false
|
269
252
|
requirements:
|
270
|
-
- -
|
253
|
+
- - '>='
|
271
254
|
- !ruby/object:Gem::Version
|
272
255
|
version: '0'
|
273
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
274
|
-
none: false
|
275
257
|
requirements:
|
276
|
-
- -
|
258
|
+
- - '>='
|
277
259
|
- !ruby/object:Gem::Version
|
278
260
|
version: '0'
|
279
261
|
requirements: []
|
280
262
|
rubyforge_project: babelyoda
|
281
|
-
rubygems_version:
|
263
|
+
rubygems_version: 2.0.14.1
|
282
264
|
signing_key:
|
283
|
-
specification_version:
|
265
|
+
specification_version: 4
|
284
266
|
summary: Xcode project localization made easy
|
285
267
|
test_files: []
|