babelyoda 2.1.13 → 2.1.14

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -2,3 +2,4 @@ v1.1.0. Initial release.
2
2
  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
+ v2.1.14. Fix merging of pluralized keys: translated values are now preserved correctly.
@@ -1,8 +1,10 @@
1
- = babelyoda
1
+ # babelyoda
2
+
3
+ [![Dependency Status](https://gemnasium.com/eploko/babelyoda.png)](https://gemnasium.com/eploko/babelyoda)
2
4
 
3
5
  A simple utility to push/pull l10n resources of an Xcode project to/from the translators.
4
6
 
5
- == Note on Patches/Pull Requests
7
+ ## Note on Patches/Pull Requests
6
8
 
7
9
  * Fork the project.
8
10
  * Make your feature addition or bug fix.
@@ -12,6 +14,6 @@ A simple utility to push/pull l10n resources of an Xcode project to/from the tra
12
14
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
15
  * Send me a pull request. Bonus points for topic branches.
14
16
 
15
- == Copyright
17
+ ## Copyright
16
18
 
17
19
  Copyright (c) 2010-2012 Andrey Subbotin. See LICENSE for details.
@@ -5,12 +5,12 @@ module Babelyoda
5
5
  attr_accessor :language
6
6
  attr_accessor :status
7
7
  attr_accessor :text
8
-
8
+
9
9
  def initialize(language, text, status = :requires_translation)
10
10
  @language, @text, @status = language.to_sym, text, status.to_sym
11
11
  pluralize! if plural_id?(@text)
12
12
  end
13
-
13
+
14
14
  def pluralize!(plural_key = :one)
15
15
  return if plural?
16
16
  new_text = { :one => nil, :some => nil, :many => nil, :none => nil }
@@ -21,12 +21,12 @@ module Babelyoda
21
21
  else
22
22
  new_text[plural_key] = text
23
23
  end
24
-
24
+
25
25
  @text = new_text
26
26
  end
27
-
27
+
28
28
  def plural? ; text.kind_of? Hash ; end
29
-
29
+
30
30
  def merge!(other_value, options = {})
31
31
  updated = false
32
32
  options = resolve_options options
@@ -34,7 +34,7 @@ module Babelyoda
34
34
  unless @language.to_sym == other_value.language.to_sym
35
35
  raise "Can't merge values in different languages: #{@language.to_sym} and #{other_value.language.to_sym}"
36
36
  end
37
-
37
+
38
38
  raise "Can't merge a plural and a non-plural value!" unless plural? == other_value.plural?
39
39
 
40
40
  if plural?
@@ -45,34 +45,34 @@ module Babelyoda
45
45
  else
46
46
  if mergeable?(options)
47
47
  if @text != other_value.text && !other_value.nil?
48
- @text = other_value.text
48
+ @text = other_value.text
49
49
  updated = true
50
50
  end
51
51
  end
52
52
  end
53
53
  return updated
54
54
  end
55
-
55
+
56
56
  private
57
57
  include Babelyoda::Regexp
58
-
58
+
59
59
  def resolve_options(options = {})
60
60
  default_options.merge!(options)
61
61
  end
62
-
62
+
63
63
  def default_options
64
64
  { preserve: false, plain_text_keys: true }
65
65
  end
66
-
66
+
67
67
  def mergeable?(options = {})
68
68
  options = resolve_options options
69
69
  !options[:preserve] || (@status.to_sym == :requires_translation && options[:plain_text_keys])
70
70
  end
71
-
71
+
72
72
  def merge_plural_type!(type, other_value, options)
73
- if mergeable?
73
+ if mergeable?(options)
74
74
  if @text[type] != other_value && !other_value.nil?
75
- @text[type] = other_value
75
+ @text[type] = other_value
76
76
  return true
77
77
  end
78
78
  end
@@ -1,3 +1,3 @@
1
1
  module Babelyoda
2
- VERSION = "2.1.13"
2
+ VERSION = "2.1.14"
3
3
  end
@@ -4,39 +4,83 @@ describe "localization value" do
4
4
  it "can be created" do
5
5
  value = Babelyoda::LocalizationValue.new(:en, "Value 1")
6
6
  value.language.should == :en
7
+ value.status.should == :requires_translation
7
8
  value.text.should == "Value 1"
8
9
  end
9
-
10
- it "should merge non-plural values" do
11
- value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
12
- value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
13
- value1.merge!(value2)
14
- value1.language.should == :en
15
- value1.text.should == "Value 2"
16
- end
17
10
 
18
- it "should merge values if allowed so in options and the status == :translation_required" do
19
- value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
20
- value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
21
- value1.merge!(value2, { preserve: false })
22
- value1.language.should == :en
23
- value1.text.should == "Value 2"
24
- end
25
-
26
- it "should preserve values if specified so in options and the status != :translation_required" do
27
- value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
28
- value1.status = :translated
29
- value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
30
- value1.merge!(value2, { preserve: true })
31
- value1.language.should == :en
32
- value1.text.should == "Value 1"
11
+ describe "(singular)" do
12
+ it "should merge non-plural values" do
13
+ value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
14
+ value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
15
+ value1.merge!(value2)
16
+ value1.language.should == :en
17
+ value1.text.should == "Value 2"
18
+ end
19
+
20
+ it "should merge values if allowed so in options and the status == :translation_required" do
21
+ value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
22
+ value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
23
+ value1.merge!(value2, { preserve: false })
24
+ value1.language.should == :en
25
+ value1.text.should == "Value 2"
26
+ end
27
+
28
+ it "should preserve values if specified so in options and the status != :translation_required" do
29
+ value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
30
+ value1.status = :translated
31
+ value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
32
+ value1.merge!(value2, { preserve: true })
33
+ value1.language.should == :en
34
+ value1.text.should == "Value 1"
35
+ end
36
+
37
+ it "should preserve values in status :requires_translation if the project uses non plain text keys" do
38
+ value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
39
+ value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
40
+ value1.merge!(value2, { preserve: true, plain_text_keys: false })
41
+ value1.language.should == :en
42
+ value1.text.should == "Value 1"
43
+ end
33
44
  end
34
45
 
35
- it "should preserve values in status :requires_translation if the project uses non plain text keys" do
36
- value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
37
- value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
38
- value1.merge!(value2, { preserve: true, plain_text_keys: false })
39
- value1.language.should == :en
40
- value1.text.should == "Value 1"
46
+ describe "(plural)" do
47
+ it "should store value as a hash" do
48
+ value1 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 1")
49
+ value1.language.should == :en
50
+ value1.text[:one].should == "Plural %d value 1"
51
+ end
52
+
53
+ it "should merge plural values" do
54
+ value1 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 1")
55
+ value2 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 2")
56
+ value1.merge!(value2)
57
+ value1.language.should == :en
58
+ value1.text[:one].should == "Plural %d value 2"
59
+ end
60
+
61
+ it "should merge values if allowed so in options and the status == :translation_required" do
62
+ value1 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 1")
63
+ value2 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 2")
64
+ value1.merge!(value2, { preserve: false })
65
+ value1.language.should == :en
66
+ value1.text[:one].should == "Plural %d value 2"
67
+ end
68
+
69
+ it "should preserve values if specified so in options and the status != :translation_required" do
70
+ value1 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 1")
71
+ value1.status = :translated
72
+ value2 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 2")
73
+ value1.merge!(value2, { preserve: true })
74
+ value1.language.should == :en
75
+ value1.text[:one].should == "Plural %d value 1"
76
+ end
77
+
78
+ it "should preserve values in status :requires_translation if the project uses non plain text keys" do
79
+ value1 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 1")
80
+ value2 = Babelyoda::LocalizationValue.new(:en, "Plural %[one]d value 2")
81
+ value1.merge!(value2, { preserve: true, plain_text_keys: false })
82
+ value1.language.should == :en
83
+ value1.text[:one].should == "Plural %d value 1"
84
+ end
41
85
  end
42
86
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babelyoda
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.13
4
+ version: 2.1.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-16 00:00:00.000000000Z
12
+ date: 2012-10-02 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70276027104500 !ruby/object:Gem::Requirement
16
+ requirement: &70299661451080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70276027104500
24
+ version_requirements: *70299661451080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: guard
27
- requirement: &70276027104020 !ruby/object:Gem::Requirement
27
+ requirement: &70299661450300 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70276027104020
35
+ version_requirements: *70299661450300
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: guard-rspec
38
- requirement: &70276027103600 !ruby/object:Gem::Requirement
38
+ requirement: &70299661449520 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70276027103600
46
+ version_requirements: *70299661449520
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: ruby_gntp
49
- requirement: &70276027102960 !ruby/object:Gem::Requirement
49
+ requirement: &70299661448840 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70276027102960
57
+ version_requirements: *70299661448840
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: awesome_print
60
- requirement: &70276027102440 !ruby/object:Gem::Requirement
60
+ requirement: &70299661447980 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: 1.0.2
69
69
  type: :runtime
70
70
  prerelease: false
71
- version_requirements: *70276027102440
71
+ version_requirements: *70299661447980
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: rake
74
- requirement: &70276027101600 !ruby/object:Gem::Requirement
74
+ requirement: &70299661446760 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ~>
@@ -82,10 +82,10 @@ dependencies:
82
82
  version: 0.9.2.2
83
83
  type: :runtime
84
84
  prerelease: false
85
- version_requirements: *70276027101600
85
+ version_requirements: *70299661446760
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: active_support
88
- requirement: &70276027100860 !ruby/object:Gem::Requirement
88
+ requirement: &70299661445680 !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
91
  - - ~>
@@ -96,10 +96,10 @@ dependencies:
96
96
  version: 3.0.0
97
97
  type: :runtime
98
98
  prerelease: false
99
- version_requirements: *70276027100860
99
+ version_requirements: *70299661445680
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: rchardet19
102
- requirement: &70276027095740 !ruby/object:Gem::Requirement
102
+ requirement: &70299661437380 !ruby/object:Gem::Requirement
103
103
  none: false
104
104
  requirements:
105
105
  - - ~>
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 1.3.5
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *70276027095740
113
+ version_requirements: *70299661437380
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: builder
116
- requirement: &70276027094780 !ruby/object:Gem::Requirement
116
+ requirement: &70299661436500 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -124,10 +124,10 @@ dependencies:
124
124
  version: 3.0.0
125
125
  type: :runtime
126
126
  prerelease: false
127
- version_requirements: *70276027094780
127
+ version_requirements: *70299661436500
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: nokogiri
130
- requirement: &70276027093940 !ruby/object:Gem::Requirement
130
+ requirement: &70299661435560 !ruby/object:Gem::Requirement
131
131
  none: false
132
132
  requirements:
133
133
  - - ~>
@@ -138,10 +138,10 @@ dependencies:
138
138
  version: 1.5.0
139
139
  type: :runtime
140
140
  prerelease: false
141
- version_requirements: *70276027093940
141
+ version_requirements: *70299661435560
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: term-ansicolor
144
- requirement: &70276027092980 !ruby/object:Gem::Requirement
144
+ requirement: &70299661434740 !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements:
147
147
  - - ~>
@@ -152,10 +152,10 @@ dependencies:
152
152
  version: 1.0.7
153
153
  type: :runtime
154
154
  prerelease: false
155
- version_requirements: *70276027092980
155
+ version_requirements: *70299661434740
156
156
  - !ruby/object:Gem::Dependency
157
157
  name: log4r-color
158
- requirement: &70276027092140 !ruby/object:Gem::Requirement
158
+ requirement: &70299661433860 !ruby/object:Gem::Requirement
159
159
  none: false
160
160
  requirements:
161
161
  - - ~>
@@ -163,7 +163,7 @@ dependencies:
163
163
  version: '1.2'
164
164
  type: :runtime
165
165
  prerelease: false
166
- version_requirements: *70276027092140
166
+ version_requirements: *70299661433860
167
167
  description: A simple utility to push/pull l10n resources of an Xcode project to/from
168
168
  the translators
169
169
  email:
@@ -177,7 +177,7 @@ files:
177
177
  - Gemfile
178
178
  - Guardfile
179
179
  - LICENSE
180
- - README.rdoc
180
+ - README.md
181
181
  - Rakefile
182
182
  - babelyoda.gemspec
183
183
  - lib/babelyoda.rb
@@ -225,7 +225,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
225
225
  version: '0'
226
226
  segments:
227
227
  - 0
228
- hash: 4179561597520483115
228
+ hash: -3563055809853889373
229
229
  required_rubygems_version: !ruby/object:Gem::Requirement
230
230
  none: false
231
231
  requirements:
@@ -234,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
234
234
  version: '0'
235
235
  segments:
236
236
  - 0
237
- hash: 4179561597520483115
237
+ hash: -3563055809853889373
238
238
  requirements: []
239
239
  rubyforge_project: babelyoda
240
240
  rubygems_version: 1.8.10