yaml-validator 0.1.7 → 0.1.8
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/locked_keys.rb +31 -0
- data/lib/yaml-validator.rb +20 -1
- data/lib/yaml-validator/version.rb +1 -1
- data/spec/fixtures/locked_keys/en.yml +15 -0
- data/spec/fixtures/locked_keys/es.yml +15 -0
- data/spec/fixtures/locked_keys/locked_keys +4 -0
- data/spec/yaml-validator_spec.rb +15 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c503fa73edea28c9fe2799bfaaf4758eca1b36ed
|
4
|
+
data.tar.gz: 60bef9cd8b188825561a14e8aeeb16fa38fb2ff1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61c78d39bc78edd00f46e64e61518fc41f13a14c03006e3b1ed6503acf4f83e0ef2ef1b07a70e1494377f582869c9c8b3bece037a57ed58cf15ae7f359a093c5
|
7
|
+
data.tar.gz: b65227a65b0551438e3f6498cf095f60a7bcd26d1cd29a73295835f356339471bdfe98d6e00d3371a15d310649c42b3a7935db51cc1055a0f81606e8002544ec
|
data/Gemfile.lock
CHANGED
data/lib/locked_keys.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
class LockedKeys
|
2
|
+
def initialize(root_path)
|
3
|
+
@locked_patterns = []
|
4
|
+
|
5
|
+
fullpath = File.join(root_path, 'locked_keys')
|
6
|
+
if File.exists? fullpath
|
7
|
+
read_locked_patterns(fullpath) unless File.directory?(fullpath)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def locked?(full_key)
|
12
|
+
@locked_patterns.each do |pattern|
|
13
|
+
if full_key =~ pattern
|
14
|
+
return true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
false
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def read_locked_patterns(fullpath)
|
24
|
+
File.open(fullpath) do |f|
|
25
|
+
f.each_line do |line|
|
26
|
+
next if line.empty? or line.start_with? '#'
|
27
|
+
@locked_patterns << Regexp.new(line.rstrip)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/yaml-validator.rb
CHANGED
@@ -1,21 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'yaml'
|
2
3
|
require 'yaml-validator/version'
|
3
4
|
require_relative './helpers'
|
4
5
|
require_relative './pluralization-validator'
|
5
6
|
require_relative './sanitized-html-validator'
|
7
|
+
require_relative './locked_keys'
|
6
8
|
|
7
9
|
class YamlValidator
|
8
10
|
|
9
11
|
def initialize(root_path, options = {})
|
10
12
|
@options = options
|
11
13
|
@root_path = root_path
|
14
|
+
@locked_keys = LockedKeys.new(@root_path) unless @root_path.nil?
|
12
15
|
end
|
13
16
|
|
14
17
|
def en
|
15
18
|
return @en unless @en.nil?
|
16
19
|
|
17
20
|
fullpath = File.join(@root_path, 'en.yml')
|
18
|
-
return nil unless File.
|
21
|
+
return nil unless File.readable?(fullpath)
|
19
22
|
|
20
23
|
@en = YAML.load_file(fullpath)['en']
|
21
24
|
@en = Helpers.normalize_yaml(@en)
|
@@ -135,9 +138,25 @@ class YamlValidator
|
|
135
138
|
def validate_item(full_key, value, is_pluralization = false)
|
136
139
|
errors = validate_item_vars(full_key, value, is_pluralization)
|
137
140
|
errors.concat validate_item_characters(full_key, value)
|
141
|
+
errors.concat validate_locked_key(full_key, value)
|
138
142
|
errors
|
139
143
|
end
|
140
144
|
|
145
|
+
def validate_locked_key(full_key, value)
|
146
|
+
errors = []
|
147
|
+
if @locked_keys.locked? full_key
|
148
|
+
locked_value = find_english_value(full_key)
|
149
|
+
if locked_value != value
|
150
|
+
errors << "#{full_key}: locked key value changed from '#{locked_value}' to '#{value}'"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
errors
|
154
|
+
end
|
155
|
+
|
156
|
+
def find_english_value(full_key)
|
157
|
+
self.class.find_key_in_yaml_object(full_key, en)
|
158
|
+
end
|
159
|
+
|
141
160
|
def validate_item_characters(full_key, value)
|
142
161
|
bad_chars = '⏎'
|
143
162
|
bad_chars_found = []
|
@@ -0,0 +1,15 @@
|
|
1
|
+
en:
|
2
|
+
key1: value
|
3
|
+
locked_key1: locked value
|
4
|
+
locked_key2: locked value
|
5
|
+
locked_key3: locked value
|
6
|
+
unlocked_key4: locked value
|
7
|
+
key3:
|
8
|
+
subkey1: value
|
9
|
+
locked_subkey1: locked value
|
10
|
+
locked_subkey2: locked value
|
11
|
+
items:
|
12
|
+
- locked_key1: locked value
|
13
|
+
unlocked_key1: bla bla
|
14
|
+
- locked_key1: locked value
|
15
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
es:
|
2
|
+
key1: different value
|
3
|
+
locked_key1: locked value
|
4
|
+
locked_key2: changed value
|
5
|
+
locked_key3: changed value
|
6
|
+
unlocked_key4: changed value
|
7
|
+
key3:
|
8
|
+
subkey1: value
|
9
|
+
locked_subkey1: changed value
|
10
|
+
locked_subkey2: changed value
|
11
|
+
items:
|
12
|
+
- locked_key1: changed value
|
13
|
+
unlocked_key1: changed value
|
14
|
+
- locked_key1: changed value
|
15
|
+
|
data/spec/yaml-validator_spec.rb
CHANGED
@@ -35,6 +35,21 @@ describe YamlValidator do
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
describe "locked_keys scenario" do
|
39
|
+
it "returns errors" do
|
40
|
+
validator = YamlValidator.new('spec/fixtures/locked_keys', missing: false)
|
41
|
+
errors = validator.validate()
|
42
|
+
errors.should == [
|
43
|
+
"es.yml: locked_key2: locked key value changed from 'locked value' to 'changed value'",
|
44
|
+
"es.yml: locked_key3: locked key value changed from 'locked value' to 'changed value'",
|
45
|
+
"es.yml: key3.locked_subkey1: locked key value changed from 'locked value' to 'changed value'",
|
46
|
+
"es.yml: key3.locked_subkey2: locked key value changed from 'locked value' to 'changed value'",
|
47
|
+
"es.yml: items.0.locked_key1: locked key value changed from 'locked value' to 'changed value'",
|
48
|
+
"es.yml: items.1.locked_key1: locked key value changed from 'locked value' to 'changed value'"
|
49
|
+
]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
38
53
|
describe "bad_chars scenario" do
|
39
54
|
it "returns two errors" do
|
40
55
|
validator = YamlValidator.new('spec/fixtures/bad_chars')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yaml-validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Elentok
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- Rakefile
|
98
98
|
- bin/yaml-validator
|
99
99
|
- lib/helpers.rb
|
100
|
+
- lib/locked_keys.rb
|
100
101
|
- lib/pluralization-validator.rb
|
101
102
|
- lib/sanitized-html-validator.rb
|
102
103
|
- lib/yaml-validator.rb
|
@@ -109,6 +110,9 @@ files:
|
|
109
110
|
- spec/fixtures/inconsistent_types/he.yml
|
110
111
|
- spec/fixtures/invalid_yml/en.yml
|
111
112
|
- spec/fixtures/invalid_yml/invalid.yml
|
113
|
+
- spec/fixtures/locked_keys/en.yml
|
114
|
+
- spec/fixtures/locked_keys/es.yml
|
115
|
+
- spec/fixtures/locked_keys/locked_keys
|
112
116
|
- spec/fixtures/missing_translations/en.yml
|
113
117
|
- spec/fixtures/missing_translations/he.yml
|
114
118
|
- spec/fixtures/numbered_keys/en.yml
|
@@ -153,6 +157,9 @@ test_files:
|
|
153
157
|
- spec/fixtures/inconsistent_types/he.yml
|
154
158
|
- spec/fixtures/invalid_yml/en.yml
|
155
159
|
- spec/fixtures/invalid_yml/invalid.yml
|
160
|
+
- spec/fixtures/locked_keys/en.yml
|
161
|
+
- spec/fixtures/locked_keys/es.yml
|
162
|
+
- spec/fixtures/locked_keys/locked_keys
|
156
163
|
- spec/fixtures/missing_translations/en.yml
|
157
164
|
- spec/fixtures/missing_translations/he.yml
|
158
165
|
- spec/fixtures/numbered_keys/en.yml
|