yaml-validator 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|