vocab 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ # 0.0.5
2
+
3
+ * Print warning messages if there is a leading BOM character in Rails yml files
4
+
1
5
  # 0.0.4
2
6
 
3
7
  * Delete leftover cruft from tmp dir used in `vocab extract rails`
@@ -18,6 +18,11 @@ module Vocab
18
18
  return Dir.glob( "#{@locales_dir}/values-*/strings.xml" )
19
19
  end
20
20
 
21
+ # Override this method to do custom validation on the android xml string file
22
+ def pre_validate( path )
23
+ return true
24
+ end
25
+
21
26
  end
22
27
  end
23
28
  end
@@ -9,6 +9,7 @@ module Vocab
9
9
  files = files_to_validate
10
10
  Vocab.ui.say( "#{files.size} file(s) to validate in #{@locales_dir}" )
11
11
  files.each do |path|
12
+ ok &&= pre_validate( path )
12
13
  validation = validate_file( path )
13
14
  print( path, validation )
14
15
  ok &&= validation[ :missing ] && validation[ :missing ].empty?
@@ -41,6 +42,11 @@ module Vocab
41
42
  return result
42
43
  end
43
44
 
45
+ # Override in subclass
46
+ def pre_validate( path )
47
+ return true
48
+ end
49
+
44
50
  end
45
51
  end
46
52
  end
@@ -18,6 +18,18 @@ module Vocab
18
18
  return Dir.glob( "#{@locales_dir}/**/*.yml" ).reject { |path| File.basename( path ) == 'en.yml' }
19
19
  end
20
20
 
21
+ def pre_validate( path )
22
+ bom_regex = "\xEF\xBB\xBF".force_encoding("UTF-8")
23
+ File.open( path ) do |file|
24
+ content = file.read.force_encoding( "UTF-8" )
25
+ if content.match( bom_regex )
26
+ Vocab.ui.warn( "Found a leading BOM character in #{path}" )
27
+ return false
28
+ end
29
+ return true
30
+ end
31
+ end
32
+
21
33
  protected
22
34
 
23
35
  def flattened_keys( path )
@@ -1,3 +1,3 @@
1
1
  module Vocab
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1 @@
1
+ bom:
@@ -2,16 +2,16 @@ require "spec_helper"
2
2
 
3
3
  describe "Vocab::Validator::Base" do
4
4
 
5
- before( :each ) do
6
- @files = [ 'foo', 'bar' ]
7
- @good = { :missing => [], :extra => [] }
8
- @bad = { :missing => [ 'bad' ], :extra => [] }
9
-
10
- @validator = Vocab::Validator::Base.new
11
- @validator.should_receive( :files_to_validate ).and_return( @files )
12
- end
13
-
14
5
  describe "validate" do
6
+
7
+ before( :each ) do
8
+ @files = [ 'foo', 'bar' ]
9
+ @good = { :missing => [], :extra => [] }
10
+ @bad = { :missing => [ 'bad' ], :extra => [] }
11
+
12
+ @validator = Vocab::Validator::Base.new
13
+ @validator.should_receive( :files_to_validate ).and_return( @files )
14
+ end
15
15
 
16
16
  it "returns true if no files have missing keys" do
17
17
  @validator.should_receive( :validate_file ).exactly( @files.size ).times.and_return( @good )
@@ -22,6 +22,12 @@ describe "Vocab::Validator::Base" do
22
22
  @validator.should_receive( :validate_file ).exactly( @files.size ).times.and_return( @bad )
23
23
  @validator.validate.should be_false
24
24
  end
25
+
26
+ it "returns false if the pre_validate fails" do
27
+ @validator.should_receive( :validate_file ).exactly( @files.size ).times.and_return( @good )
28
+ @validator.should_receive( :pre_validate ).and_return( false )
29
+ @validator.validate.should be_false
30
+ end
25
31
 
26
32
  end
27
33
 
@@ -7,6 +7,20 @@ describe "Vocab::Validator::Rails" do
7
7
  @validator = Vocab::Validator::Rails.new( @locales_dir )
8
8
  end
9
9
 
10
+ describe 'pre_validate' do
11
+
12
+ it "complains about yml files with leading BOM characters" do
13
+ File.open( "#{@locales_dir}/bom.yml", "w+" ) { |f| f.write( "\xEF\xBB\xBF".force_encoding("UTF-8") ) }
14
+ File.open( "#{@locales_dir}/bom.yml", "a" ) { |f| f.write( "bom:" ) }
15
+
16
+ bom_regex = "\xEF\xBB\xBF".force_encoding("UTF-8")
17
+ File.open( "#{@locales_dir}/bom.yml" ) { |f| f.read }.force_encoding( "UTF-8" ).match( bom_regex ).should be_true
18
+
19
+ @validator.pre_validate( "#{@locales_dir}/bom.yml" ).should be_false
20
+ end
21
+
22
+ end
23
+
10
24
  describe 'validate_file' do
11
25
 
12
26
  before( :each ) do
@@ -30,9 +44,14 @@ describe "Vocab::Validator::Rails" do
30
44
  describe 'files_to_validate' do
31
45
 
32
46
  it 'returns the locale files to validate' do
33
- files = ["#{@locales_dir}/es.yml",
34
- "#{@locales_dir}/models/product/es.yml"]
35
- @validator.files_to_validate.should eql( files )
47
+ expected = ["#{@locales_dir}/bom.yml",
48
+ "#{@locales_dir}/es.yml",
49
+ "#{@locales_dir}/models/product/es.yml"]
50
+
51
+ actual = @validator.files_to_validate
52
+
53
+ actual.size.should eql( expected.size )
54
+ expected.each { |path| actual.should include( path ) }
36
55
  end
37
56
 
38
57
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vocab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
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-08 00:00:00.000000000Z
12
+ date: 2012-06-05 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: i18n
16
- requirement: &2157186620 !ruby/object:Gem::Requirement
16
+ requirement: &2152005120 !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: :runtime
23
23
  prerelease: false
24
- version_requirements: *2157186620
24
+ version_requirements: *2152005120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &2157186180 !ruby/object:Gem::Requirement
27
+ requirement: &2152004380 !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: :runtime
34
34
  prerelease: false
35
- version_requirements: *2157186180
35
+ version_requirements: *2152004380
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &2157185540 !ruby/object:Gem::Requirement
38
+ requirement: &2151940680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.7.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2157185540
46
+ version_requirements: *2151940680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &2157185000 !ruby/object:Gem::Requirement
49
+ requirement: &2151931540 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2157185000
57
+ version_requirements: *2151931540
58
58
  description: Export strings that need to be translated and integrate the completed
59
59
  translations
60
60
  email:
@@ -102,6 +102,7 @@ files:
102
102
  - spec/data/android/translations/values-es/es-string-file.xml
103
103
  - spec/data/android/write.xml
104
104
  - spec/data/android/write_plurals.xml
105
+ - spec/data/rails/locales/bom.yml
105
106
  - spec/data/rails/locales/en.yml
106
107
  - spec/data/rails/locales/es.yml
107
108
  - spec/data/rails/locales/models/product/en.yml
@@ -161,6 +162,7 @@ test_files:
161
162
  - spec/data/android/translations/values-es/es-string-file.xml
162
163
  - spec/data/android/write.xml
163
164
  - spec/data/android/write_plurals.xml
165
+ - spec/data/rails/locales/bom.yml
164
166
  - spec/data/rails/locales/en.yml
165
167
  - spec/data/rails/locales/es.yml
166
168
  - spec/data/rails/locales/models/product/en.yml