obf 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/obf/validator.rb +36 -20
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f9572d8127c5738b0d90c0856f8b7c1e501442a
4
- data.tar.gz: 189a74ad02afcc68e05c34343280a6c8d92a2b7e
3
+ metadata.gz: e5d07ecf16d2203be0d9413839d5d40fef459d1b
4
+ data.tar.gz: 8197d0663f79ae864f1be1219a7738242ad98296
5
5
  SHA512:
6
- metadata.gz: 29bcaa08c58c37653494ae993343982bb06421d9f505eed6d445d8f00b7265011ed7fc1c5efda6c6bcc1afc25d7b768b96bdcc3526482f8e7b52f33be72c7efd
7
- data.tar.gz: 2d7e74209119cfa1f1da0afac1e0a0ad96a91a36b413c277a33ef73dcdf42260f0ae93c3ca0f8ee7f42ecaf18ae2c383bd82bf5c25b16b65c1c1843e88387dc2
6
+ metadata.gz: 005aa69b9b244383b670bced8b6c43aaa9085f3e7eed91aa4640c567d9eea58520ed5da171915f497d66d8c374ec5e5b2100da6d248698c555969b5996298c17
7
+ data.tar.gz: a830f23b3501dda0b301d643086913049e55b1a759e4acf9921cf3f858e5fcdbf218ff6b39d1e847e239978399a5aa27df656efdb3194ff42795e3cbb20c54f5
@@ -10,7 +10,7 @@ module OBF
10
10
  begin
11
11
  block.call
12
12
  rescue ValidationError => e
13
- @errored = true
13
+ @errors += 1
14
14
  @checks[-1]['valid'] = false
15
15
  @checks[-1]['error'] = e.message
16
16
  @blocked = true if e.blocker
@@ -22,14 +22,28 @@ module OBF
22
22
  end
23
23
 
24
24
  def warn(message)
25
- @warned = true
25
+ @warnings += 1
26
26
  @checks[-1]['warnings'] ||= []
27
27
  @checks[-1]['warnings'] << message
28
28
  end
29
29
 
30
+ def errors
31
+ @errors || 0
32
+ end
33
+
34
+ def warnings
35
+ @warnings || 0
36
+ end
37
+
30
38
  def self.validate_obf(path)
31
39
  v = self.new
32
- v.validate_obf(path)
40
+ results = v.validate_obf(path)
41
+ {
42
+ :valid => v.errors == 0,
43
+ :errors => v.errors,
44
+ :warnings => v.warnings,
45
+ :results => results
46
+ }
33
47
  end
34
48
 
35
49
  def self.validate_obz(path)
@@ -38,12 +52,14 @@ module OBF
38
52
  def validate_obf(path, opts={})
39
53
  @blocked = nil
40
54
  @errored = false
55
+ @warnings = 0
56
+ @errors = 0
41
57
  @checks = []
42
58
 
43
59
  # TODO enforce extra attributes being defined with ext_
44
60
 
45
61
  json = nil
46
- add_check('valid_json', "Valid JSON File") do
62
+ add_check('valid_json', "JSON File") do
47
63
  begin
48
64
  json = JSON.parse(File.read(path))
49
65
  rescue => e
@@ -52,7 +68,7 @@ module OBF
52
68
  end
53
69
 
54
70
  ext = nil
55
- add_check('to_external', "Valid OBF Structure") do
71
+ add_check('to_external', "OBF Structure") do
56
72
  begin
57
73
  ext = External.from_obf(path, {})
58
74
  rescue External::StructureError => e
@@ -60,7 +76,7 @@ module OBF
60
76
  end
61
77
  end
62
78
 
63
- add_check('format_version', "Valid Format Version") do
79
+ add_check('format_version', "format version") do
64
80
  if !ext['format']
65
81
  err "format attribute is required, set to #{FORMAT}"
66
82
  end
@@ -72,20 +88,20 @@ module OBF
72
88
  end
73
89
  end
74
90
 
75
- add_check('id', "Valid Board ID") do
91
+ add_check('id', "board ID") do
76
92
  if !ext['id']
77
93
  err "id attribute is required"
78
94
  end
79
95
  end
80
96
 
81
- add_check('locale', "Valid Locale") do
97
+ add_check('locale', "locale") do
82
98
  if !ext['locale']
83
99
  err "locale attribute is required, please set to \"en\" for English"
84
100
  end
85
101
  end
86
102
 
87
- add_check('extras', "Extra Attributes") do
88
- attrs = ['format', 'id', 'locale', 'url', 'data_url', 'name', 'description_html', 'buttons', 'images', 'sounds', 'grid', 'license']
103
+ add_check('extras', "extra attributes") do
104
+ attrs = ['format', 'id', 'locale', 'url', 'data_url', 'name', 'description_html', 'buttons', 'buttons_hash', 'images', 'images_hash', 'sounds', 'sounds_hash', 'grid', 'license']
89
105
  ext.keys.each do |key|
90
106
  if !attrs.include?(key) && !key.match(/^ext_/)
91
107
  warn "#{key} attribute is not defined in the spec, should be prefixed with ext_yourapp_"
@@ -93,7 +109,7 @@ module OBF
93
109
  end
94
110
  end
95
111
 
96
- add_check('description', "Description Attributes") do
112
+ add_check('description', "descriptive attributes") do
97
113
  if !ext['name']
98
114
  warn "name attribute is strongly recommended"
99
115
  end
@@ -102,7 +118,7 @@ module OBF
102
118
  end
103
119
  end
104
120
 
105
- add_check('buttons', "Valid buttons attribute") do
121
+ add_check('buttons', "buttons attribute") do
106
122
  if !ext['buttons']
107
123
  err "buttons attribute is required"
108
124
  elsif !ext['buttons'].is_a?(Array)
@@ -110,7 +126,7 @@ module OBF
110
126
  end
111
127
  end
112
128
 
113
- add_check('grid', "Valid grid attribute") do
129
+ add_check('grid', "grid attribute") do
114
130
  if !ext['grid']
115
131
  err "grid attribute is required"
116
132
  elsif !ext['grid'].is_a?(Hash)
@@ -144,7 +160,7 @@ module OBF
144
160
  end
145
161
  end
146
162
 
147
- add_check('grid_ids', "Valid Button IDs in grid.order attribute") do
163
+ add_check('grid_ids', "button IDs in grid.order attribute") do
148
164
  button_ids = []
149
165
  if ext['buttons'] && ext['buttons'].is_a?(Array)
150
166
  ext['buttons'].each{|b| button_ids << b['id'] if b.is_a?(Hash) && b['id'] }
@@ -165,7 +181,7 @@ module OBF
165
181
  end
166
182
  end
167
183
  warn("board has no buttons defined in the grid") if used_button_ids.length == 0
168
- warn("not all defined buttons were included in the grid order") if (button_ids = used_button_ids).length > 0
184
+ warn("not all defined buttons were included in the grid order (#{(button_ids - used_button_ids).join(',')})") if (button_ids - used_button_ids).length > 0
169
185
  end
170
186
 
171
187
  unless opts['obz']
@@ -173,7 +189,7 @@ module OBF
173
189
  if ext['buttons'] && ext['buttons'].is_a?(Array)
174
190
  ext['buttons'].each{|b| button_image_ids << b['image_id'] if b.is_a?(Hash) && b['image_id'] }
175
191
  end
176
- add_check('images', "Valid images attribute") do
192
+ add_check('images', "images attribute") do
177
193
 
178
194
  if !ext['images']
179
195
  err "images attribute is required"
@@ -184,7 +200,7 @@ module OBF
184
200
 
185
201
  if ext['images'] && ext['images'].is_a?(Array)
186
202
  ext['images'].each_with_index do |image, idx|
187
- add_check("image[#{idx}]", "Valid image at [#{idx}]") do
203
+ add_check("image[#{idx}]", "image at images[#{idx}]") do
188
204
  if !image.is_a?(Hash)
189
205
  err "image must be a hash"
190
206
  elsif !image['id']
@@ -213,7 +229,7 @@ module OBF
213
229
  end
214
230
  end
215
231
 
216
- add_check('sounds', "Valid sounds attribute") do
232
+ add_check('sounds', "sounds attribute") do
217
233
 
218
234
  if !ext['sounds']
219
235
  err "sounds attribute is required"
@@ -224,7 +240,7 @@ module OBF
224
240
 
225
241
  if ext['sounds'] && ext['sounds'].is_a?(Array)
226
242
  ext['sounds'].each_with_index do |sound, idx|
227
- add_check("sounds[#{idx}]", "Valid sound at [#{idx}]") do
243
+ add_check("sounds[#{idx}]", "sound at sounds[#{idx}]") do
228
244
  if !sound.is_a?(Hash)
229
245
  err "sound must be a hash"
230
246
  elsif !sound['id']
@@ -252,7 +268,7 @@ module OBF
252
268
 
253
269
  if ext['buttons'] && ext['buttons'].is_a?(Array)
254
270
  ext['buttons'].each_with_index do |button, idx|
255
- add_check("buttons[#{idx}]", "Valid button at [#{idx}]") do
271
+ add_check("buttons[#{idx}]", "button at buttons[#{idx}]") do
256
272
  if !button.is_a?(Hash)
257
273
  err "button must be a hash"
258
274
  elsif !button['id']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: obf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Whitmer