babelyoda 2.1.5 → 2.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,7 +29,7 @@ module Babelyoda
29
29
 
30
30
  def merge!(other_value, options = {})
31
31
  updated = false
32
- options = { preserve: false }.merge!(options)
32
+ options = resolve_options options
33
33
 
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}"
@@ -43,7 +43,7 @@ module Babelyoda
43
43
  updated ||= key_updated
44
44
  end
45
45
  else
46
- if (!options[:preserve] || @status.to_sym == :requires_translation)
46
+ if mergeable?(options)
47
47
  if @text != other_value.text && !other_value.nil?
48
48
  @text = other_value.text
49
49
  updated = true
@@ -56,8 +56,21 @@ module Babelyoda
56
56
  private
57
57
  include Babelyoda::Regexp
58
58
 
59
+ def resolve_options(options = {})
60
+ default_options.merge!(options)
61
+ end
62
+
63
+ def default_options
64
+ { preserve: false, plain_text_keys: false }
65
+ end
66
+
67
+ def mergeable?(options = {})
68
+ options = resolve_options options
69
+ !options[:preserve] || (@status.to_sym == :requires_translation && options[:plain_text_keys])
70
+ end
71
+
59
72
  def merge_plural_type!(type, other_value, options)
60
- if (!options[:preserve] || @status.to_sym == :requires_translation)
73
+ if mergeable?
61
74
  if @text[type] != other_value && !other_value.nil?
62
75
  @text[type] = other_value
63
76
  return true
@@ -9,6 +9,7 @@ module Babelyoda
9
9
  attr_accessor :name
10
10
  attr_accessor :development_language
11
11
  attr_accessor :localization_languages
12
+ attr_accessor :plain_text_keys
12
13
  attr_accessor :engine
13
14
  attr_accessor :source_files
14
15
  attr_accessor :resources_folder
@@ -18,6 +19,11 @@ module Babelyoda
18
19
 
19
20
  FILENAME = 'Babelfile'
20
21
 
22
+ def initialize(*args)
23
+ super
24
+ @plain_text_keys = true
25
+ end
26
+
21
27
  def self.generate_default_babelfile
22
28
  template_file_name = File.join(BABELYODA_PATH, 'templates', 'Babelfile.erb')
23
29
  template = File.read(template_file_name)
@@ -1,3 +1,3 @@
1
1
  module Babelyoda
2
- VERSION = "2.1.5"
2
+ VERSION = "2.1.6"
3
3
  end
data/lib/babelyoda.rb CHANGED
@@ -177,7 +177,7 @@ namespace :babelyoda do
177
177
  end
178
178
 
179
179
  remote_keyset = spec.engine.load_keyset(local_keyset.name, nil, :unapproved)
180
- result = remote_keyset.merge!(local_keyset, preserve: true)
180
+ result = remote_keyset.merge!(local_keyset, preserve: true, plain_text_keys: spec.plain_text_keys)
181
181
  remote_keyset.ensure_languages!(spec.all_languages)
182
182
  if result[:new] > 0 || result[:updated] > 0
183
183
  langs.each do |lang|
@@ -14,4 +14,21 @@ describe "localization value" do
14
14
  value1.language.should == :en
15
15
  value1.text.should == "Value 2"
16
16
  end
17
+
18
+ it "should preserve values if specified so in options and the status != :translation_required" do
19
+ value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
20
+ value1.status = :translated
21
+ value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
22
+ value1.merge!(value2, { preserve: true })
23
+ value1.language.should == :en
24
+ value1.text.should == "Value 1"
25
+ end
26
+
27
+ it "should preserve values in status :requires_translation if the project uses non plain text keys" do
28
+ value1 = Babelyoda::LocalizationValue.new(:en, "Value 1")
29
+ value2 = Babelyoda::LocalizationValue.new(:en, "Value 2")
30
+ value1.merge!(value2, { preserve: true, plain_text_keys: false })
31
+ value1.language.should == :en
32
+ value1.text.should == "Value 1"
33
+ end
17
34
  end
@@ -0,0 +1,8 @@
1
+ require 'babelyoda/specification'
2
+
3
+ describe "specification" do
4
+ it "should specify plain text keys by default" do
5
+ spec = Babelyoda::Specification.new
6
+ spec.plain_text_keys.should == true
7
+ end
8
+ end
@@ -2,11 +2,23 @@ Babelyoda::Specification.new do |s|
2
2
  s.name = 'YOUR PROJECT NAME HERE'
3
3
  s.development_language = :en
4
4
  s.localization_languages = [:ru, :uk, :tr]
5
+
6
+ # Specifies whether human-readable plain text values (usu. in the
7
+ # development language) are used as localization keys.
8
+ #
9
+ # Set to false if you use something like 'views.panel.msg1' as keys in your
10
+ # project.
11
+ #
12
+ # Default is true.
13
+ #
14
+ # s.plain_text_keys = true
15
+
5
16
  s.engine = Babelyoda::Tanker.new do |t|
6
17
  t.token = 'FIX: TANKER TOKEN HERE'
7
18
  t.project_id = 'FIX: TANKER PROJECT ID HERE'
8
19
  t.endpoint = 'FIX: TANKER END POINT HERE'
9
20
  end
21
+
10
22
  s.scm = Babelyoda::Git.new
11
23
  s.source_files = FileList['Classes/**/*.{m,mm,h}']
12
24
  s.resources_folder = 'Resources'
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.5
4
+ version: 2.1.6
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-03-13 00:00:00.000000000Z
12
+ date: 2012-05-05 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70190327060400 !ruby/object:Gem::Requirement
16
+ requirement: &70259722448540 !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: *70190327060400
24
+ version_requirements: *70259722448540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: guard
27
- requirement: &70190327059900 !ruby/object:Gem::Requirement
27
+ requirement: &70259722448120 !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: *70190327059900
35
+ version_requirements: *70259722448120
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: guard-rspec
38
- requirement: &70190327059220 !ruby/object:Gem::Requirement
38
+ requirement: &70259722447700 !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: *70190327059220
46
+ version_requirements: *70259722447700
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: ruby_gntp
49
- requirement: &70190327058200 !ruby/object:Gem::Requirement
49
+ requirement: &70259722447280 !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: *70190327058200
57
+ version_requirements: *70259722447280
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: awesome_print
60
- requirement: &70190327056740 !ruby/object:Gem::Requirement
60
+ requirement: &70259722446760 !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: *70190327056740
71
+ version_requirements: *70259722446760
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: rake
74
- requirement: &70190327054460 !ruby/object:Gem::Requirement
74
+ requirement: &70259722445980 !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: *70190327054460
85
+ version_requirements: *70259722445980
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: active_support
88
- requirement: &70190327053240 !ruby/object:Gem::Requirement
88
+ requirement: &70259722445240 !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: *70190327053240
99
+ version_requirements: *70259722445240
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: rchardet19
102
- requirement: &70190327052080 !ruby/object:Gem::Requirement
102
+ requirement: &70259722444500 !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: *70190327052080
113
+ version_requirements: *70259722444500
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: builder
116
- requirement: &70190327050760 !ruby/object:Gem::Requirement
116
+ requirement: &70259722443760 !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: *70190327050760
127
+ version_requirements: *70259722443760
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: nokogiri
130
- requirement: &70190327049380 !ruby/object:Gem::Requirement
130
+ requirement: &70259722443020 !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: *70190327049380
141
+ version_requirements: *70259722443020
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: term-ansicolor
144
- requirement: &70190327047760 !ruby/object:Gem::Requirement
144
+ requirement: &70259722442260 !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: *70190327047760
155
+ version_requirements: *70259722442260
156
156
  - !ruby/object:Gem::Dependency
157
157
  name: log4r-color
158
- requirement: &70190327042720 !ruby/object:Gem::Requirement
158
+ requirement: &70259722441540 !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: *70190327042720
166
+ version_requirements: *70259722441540
167
167
  description: A simple utility to push/pull l10n resources of an Xcode project to/from
168
168
  the translators
169
169
  email:
@@ -204,6 +204,7 @@ files:
204
204
  - spec/lib/babelyoda/keyset_spec.rb
205
205
  - spec/lib/babelyoda/localization_key_spec.rb
206
206
  - spec/lib/babelyoda/localization_value_spec.rb
207
+ - spec/lib/babelyoda/specification_spec.rb
207
208
  - spec/lib/babelyoda/string_spec.rb
208
209
  - spec/lib/babelyoda/strings_lexer_spec.rb
209
210
  - spec/lib/babelyoda/strings_parser_spec.rb
@@ -222,12 +223,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
223
  - - ! '>='
223
224
  - !ruby/object:Gem::Version
224
225
  version: '0'
226
+ segments:
227
+ - 0
228
+ hash: -2287830520322804558
225
229
  required_rubygems_version: !ruby/object:Gem::Requirement
226
230
  none: false
227
231
  requirements:
228
232
  - - ! '>='
229
233
  - !ruby/object:Gem::Version
230
234
  version: '0'
235
+ segments:
236
+ - 0
237
+ hash: -2287830520322804558
231
238
  requirements: []
232
239
  rubyforge_project: babelyoda
233
240
  rubygems_version: 1.8.10