json-schema 3.0.0 → 4.0.0

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/lib/json-schema/attribute.rb +13 -14
  4. data/lib/json-schema/attributes/additionalitems.rb +1 -0
  5. data/lib/json-schema/attributes/additionalproperties.rb +3 -6
  6. data/lib/json-schema/attributes/allof.rb +2 -2
  7. data/lib/json-schema/attributes/anyof.rb +2 -2
  8. data/lib/json-schema/attributes/dependencies.rb +1 -0
  9. data/lib/json-schema/attributes/disallow.rb +2 -1
  10. data/lib/json-schema/attributes/enum.rb +2 -2
  11. data/lib/json-schema/attributes/extends.rb +6 -6
  12. data/lib/json-schema/attributes/format.rb +2 -1
  13. data/lib/json-schema/attributes/formats/date.rb +1 -0
  14. data/lib/json-schema/attributes/formats/date_time.rb +2 -1
  15. data/lib/json-schema/attributes/formats/date_time_v4.rb +1 -0
  16. data/lib/json-schema/attributes/formats/uri.rb +1 -0
  17. data/lib/json-schema/attributes/items.rb +1 -0
  18. data/lib/json-schema/attributes/limits/numeric.rb +1 -1
  19. data/lib/json-schema/attributes/maxdecimal.rb +1 -1
  20. data/lib/json-schema/attributes/not.rb +2 -2
  21. data/lib/json-schema/attributes/oneof.rb +2 -4
  22. data/lib/json-schema/attributes/patternproperties.rb +1 -0
  23. data/lib/json-schema/attributes/properties.rb +4 -4
  24. data/lib/json-schema/attributes/propertynames.rb +23 -0
  25. data/lib/json-schema/attributes/ref.rb +7 -7
  26. data/lib/json-schema/attributes/required.rb +3 -2
  27. data/lib/json-schema/attributes/type.rb +3 -2
  28. data/lib/json-schema/attributes/type_v4.rb +1 -1
  29. data/lib/json-schema/errors/validation_error.rb +4 -5
  30. data/lib/json-schema/schema/reader.rb +2 -0
  31. data/lib/json-schema/schema/validator.rb +3 -3
  32. data/lib/json-schema/schema.rb +3 -4
  33. data/lib/json-schema/util/array_set.rb +1 -1
  34. data/lib/json-schema/util/uri.rb +7 -7
  35. data/lib/json-schema/util/uuid.rb +227 -226
  36. data/lib/json-schema/validator.rb +84 -82
  37. data/lib/json-schema/validators/draft1.rb +21 -23
  38. data/lib/json-schema/validators/draft2.rb +22 -24
  39. data/lib/json-schema/validators/draft3.rb +26 -28
  40. data/lib/json-schema/validators/draft4.rb +34 -36
  41. data/lib/json-schema/validators/draft6.rb +36 -37
  42. data/lib/json-schema/validators/hyper-draft1.rb +2 -3
  43. data/lib/json-schema/validators/hyper-draft2.rb +2 -3
  44. data/lib/json-schema/validators/hyper-draft3.rb +2 -3
  45. data/lib/json-schema/validators/hyper-draft4.rb +2 -3
  46. data/lib/json-schema/validators/hyper-draft6.rb +2 -3
  47. data/lib/json-schema.rb +2 -2
  48. data/resources/draft-06.json +12 -12
  49. metadata +7 -6
@@ -15,21 +15,19 @@ require 'json-schema/errors/json_parse_error'
15
15
  require 'json-schema/util/uri'
16
16
 
17
17
  module JSON
18
-
19
18
  class Validator
20
-
21
19
  @@schemas = {}
22
20
  @@cache_schemas = true
23
21
  @@default_opts = {
24
- :list => false,
25
- :version => nil,
26
- :validate_schema => false,
27
- :record_errors => false,
28
- :errors_as_objects => false,
29
- :insert_defaults => false,
30
- :clear_cache => false,
31
- :strict => false,
32
- :parse_data => true
22
+ list: false,
23
+ version: nil,
24
+ validate_schema: false,
25
+ record_errors: false,
26
+ errors_as_objects: false,
27
+ insert_defaults: false,
28
+ clear_cache: false,
29
+ strict: false,
30
+ parse_data: true,
33
31
  }
34
32
  @@validators = {}
35
33
  @@default_validator = nil
@@ -38,28 +36,26 @@ module JSON
38
36
  @@serializer = nil
39
37
  @@mutex = Mutex.new
40
38
 
41
- def initialize(schema_data, data, opts={})
39
+ def initialize(schema_data, opts = {})
42
40
  @options = @@default_opts.clone.merge(opts)
43
41
  @errors = []
44
42
 
45
43
  configured_validator = self.class.validator_for_name(@options[:version])
46
44
  @options[:schema_reader] ||= self.class.schema_reader
47
45
 
48
- @validation_options = @options[:record_errors] ? {:record_errors => true} : {}
46
+ @validation_options = @options[:record_errors] ? { record_errors: true } : {}
49
47
  @validation_options[:insert_defaults] = true if @options[:insert_defaults]
50
48
  @validation_options[:strict] = true if @options[:strict] == true
51
49
  @validation_options[:clear_cache] = true if !@@cache_schemas || @options[:clear_cache]
52
50
 
53
51
  @@mutex.synchronize { @base_schema = initialize_schema(schema_data, configured_validator) }
54
- @original_data = data
55
- @data = initialize_data(data)
56
52
  @@mutex.synchronize { build_schemas(@base_schema) }
57
53
 
58
54
  # validate the schema, if requested
59
55
  if @options[:validate_schema]
60
56
  # Don't clear the cache during metaschema validation!
61
- meta_validator = self.class.new(@base_schema.validator.metaschema, @base_schema.schema, {:clear_cache => false})
62
- meta_validator.validate
57
+ meta_validator = self.class.new(@base_schema.validator.metaschema, { clear_cache: false })
58
+ meta_validator.validate(@base_schema.schema)
63
59
  end
64
60
 
65
61
  # If the :fragment option is set, try and validate against the fragment
@@ -70,11 +66,11 @@ module JSON
70
66
 
71
67
  def schema_from_fragment(base_schema, fragment)
72
68
  schema_uri = base_schema.uri
73
- fragments = fragment.split("/").map { |f| f.gsub('~0', '~').gsub('~1', '/') }
69
+ fragments = fragment.split('/').map { |f| f.gsub('~0', '~').gsub('~1', '/') }
74
70
 
75
71
  # ensure the first element was a hash, per the fragment spec
76
- if fragments.shift != "#"
77
- raise JSON::Schema::SchemaError.new("Invalid fragment syntax in :fragment option")
72
+ if fragments.shift != '#'
73
+ raise JSON::Schema::SchemaError, 'Invalid fragment syntax in :fragment option'
78
74
  end
79
75
 
80
76
  schema_fragment = base_schema.schema
@@ -88,7 +84,7 @@ module JSON
88
84
  end
89
85
 
90
86
  unless schema_fragment.is_a?(Hash)
91
- raise JSON::Schema::SchemaError.new("Invalid fragment resolution for :fragment option")
87
+ raise JSON::Schema::SchemaError, 'Invalid fragment resolution for :fragment option'
92
88
  end
93
89
 
94
90
  schema = JSON::Schema.new(schema_fragment, schema_uri, base_schema.validator)
@@ -103,24 +99,28 @@ module JSON
103
99
  end
104
100
 
105
101
  # Run a simple true/false validation of data against a schema
106
- def validate
107
- @base_schema.validate(@data,[],self,@validation_options)
102
+ def validate(data)
103
+ original_data = data
104
+ data = initialize_data(data)
105
+ @base_schema.validate(data, [], self, @validation_options)
108
106
 
109
107
  if @options[:record_errors]
110
108
  if @options[:errors_as_objects]
111
- @errors.map{|e| e.to_hash}
109
+ @errors.map { |e| e.to_hash }
112
110
  else
113
- @errors.map{|e| e.to_string}
111
+ @errors.map { |e| e.to_string }
114
112
  end
115
113
  else
116
114
  true
117
115
  end
118
116
  ensure
117
+ @errors = []
118
+
119
119
  if @validation_options[:clear_cache] == true
120
120
  self.class.clear_cache
121
121
  end
122
122
  if @validation_options[:insert_defaults]
123
- self.class.merge_missing_values(@data, @original_data)
123
+ self.class.merge_missing_values(data, original_data)
124
124
  end
125
125
  end
126
126
 
@@ -141,13 +141,13 @@ module JSON
141
141
  schema = parent_schema.schema
142
142
 
143
143
  # Build ref schemas if they exist
144
- if schema["$ref"]
145
- load_ref_schema(parent_schema, schema["$ref"])
144
+ if schema['$ref']
145
+ load_ref_schema(parent_schema, schema['$ref'])
146
146
  end
147
147
 
148
- case schema["extends"]
148
+ case schema['extends']
149
149
  when String
150
- load_ref_schema(parent_schema, schema["extends"])
150
+ load_ref_schema(parent_schema, schema['extends'])
151
151
  when Array
152
152
  schema['extends'].each do |type|
153
153
  handle_schema(parent_schema, type)
@@ -155,7 +155,7 @@ module JSON
155
155
  end
156
156
 
157
157
  # Check for schemas in union types
158
- ["type", "disallow"].each do |key|
158
+ %w[type disallow].each do |key|
159
159
  if schema[key].is_a?(Array)
160
160
  schema[key].each do |type|
161
161
  if type.is_a?(Hash)
@@ -169,6 +169,7 @@ module JSON
169
169
  # are themselves schemas.
170
170
  %w[definitions properties patternProperties].each do |key|
171
171
  next unless value = schema[key]
172
+
172
173
  value.each do |k, inner_schema|
173
174
  handle_schema(parent_schema, inner_schema)
174
175
  end
@@ -177,20 +178,22 @@ module JSON
177
178
  # Schema properties whose values are themselves schemas.
178
179
  %w[additionalProperties additionalItems dependencies extends].each do |key|
179
180
  next unless schema[key].is_a?(Hash)
181
+
180
182
  handle_schema(parent_schema, schema[key])
181
183
  end
182
184
 
183
185
  # Schema properties whose values may be an array of schemas.
184
186
  %w[allOf anyOf oneOf not].each do |key|
185
187
  next unless value = schema[key]
188
+
186
189
  Array(value).each do |inner_schema|
187
190
  handle_schema(parent_schema, inner_schema)
188
191
  end
189
192
  end
190
193
 
191
194
  # Items are always schemas
192
- if schema["items"]
193
- items = schema["items"].clone
195
+ if schema['items']
196
+ items = schema['items'].clone
194
197
  items = [items] unless items.is_a?(Array)
195
198
 
196
199
  items.each do |item|
@@ -199,10 +202,9 @@ module JSON
199
202
  end
200
203
 
201
204
  # Convert enum to a ArraySet
202
- if schema["enum"].is_a?(Array)
203
- schema["enum"] = ArraySet.new(schema["enum"])
205
+ if schema['enum'].is_a?(Array)
206
+ schema['enum'] = ArraySet.new(schema['enum'])
204
207
  end
205
-
206
208
  end
207
209
 
208
210
  # Either load a reference schema or create a new schema
@@ -225,58 +227,57 @@ module JSON
225
227
  @errors
226
228
  end
227
229
 
228
-
229
230
  class << self
230
- def validate(schema, data,opts={})
231
+ def validate(schema, data, opts = {})
231
232
  begin
232
233
  validate!(schema, data, opts)
233
234
  rescue JSON::Schema::ValidationError, JSON::Schema::SchemaError
234
- return false
235
+ false
235
236
  end
236
237
  end
237
238
 
238
- def validate_json(schema, data, opts={})
239
- validate(schema, data, opts.merge(:json => true))
239
+ def validate_json(schema, data, opts = {})
240
+ validate(schema, data, opts.merge(json: true))
240
241
  end
241
242
 
242
- def validate_uri(schema, data, opts={})
243
- validate(schema, data, opts.merge(:uri => true))
243
+ def validate_uri(schema, data, opts = {})
244
+ validate(schema, data, opts.merge(uri: true))
244
245
  end
245
246
 
246
- def validate!(schema, data,opts={})
247
- validator = new(schema, data, opts)
248
- validator.validate
247
+ def validate!(schema, data, opts = {})
248
+ validator = new(schema, opts)
249
+ validator.validate(data)
249
250
  end
250
251
 
251
- def validate2(schema, data, opts={})
252
- warn "[DEPRECATION NOTICE] JSON::Validator#validate2 has been replaced by JSON::Validator#validate! and will be removed in version >= 3. Please use the #validate! method instead."
252
+ def validate2(schema, data, opts = {})
253
+ warn '[DEPRECATION NOTICE] JSON::Validator#validate2 has been replaced by JSON::Validator#validate! and will be removed in version >= 3. Please use the #validate! method instead.'
253
254
  validate!(schema, data, opts)
254
255
  end
255
256
 
256
- def validate_json!(schema, data, opts={})
257
- validate!(schema, data, opts.merge(:json => true))
257
+ def validate_json!(schema, data, opts = {})
258
+ validate!(schema, data, opts.merge(json: true))
258
259
  end
259
260
 
260
- def validate_uri!(schema, data, opts={})
261
- validate!(schema, data, opts.merge(:uri => true))
261
+ def validate_uri!(schema, data, opts = {})
262
+ validate!(schema, data, opts.merge(uri: true))
262
263
  end
263
264
 
264
- def fully_validate(schema, data, opts={})
265
- validate!(schema, data, opts.merge(:record_errors => true))
265
+ def fully_validate(schema, data, opts = {})
266
+ validate!(schema, data, opts.merge(record_errors: true))
266
267
  end
267
268
 
268
- def fully_validate_schema(schema, opts={})
269
+ def fully_validate_schema(schema, opts = {})
269
270
  data = schema
270
271
  schema = validator_for_name(opts[:version]).metaschema
271
272
  fully_validate(schema, data, opts)
272
273
  end
273
274
 
274
- def fully_validate_json(schema, data, opts={})
275
- fully_validate(schema, data, opts.merge(:json => true))
275
+ def fully_validate_json(schema, data, opts = {})
276
+ fully_validate(schema, data, opts.merge(json: true))
276
277
  end
277
278
 
278
- def fully_validate_uri(schema, data, opts={})
279
- fully_validate(schema, data, opts.merge(:uri => true))
279
+ def fully_validate_uri(schema, data, opts = {})
280
+ fully_validate(schema, data, opts.merge(uri: true))
280
281
  end
281
282
 
282
283
  def schema_reader
@@ -316,7 +317,7 @@ module JSON
316
317
  end
317
318
 
318
319
  def cache_schemas=(val)
319
- warn "[DEPRECATION NOTICE] Schema caching is now a validation option. Schemas will still be cached if this is set to true, but this method will be removed in version >= 3. Please use the :clear_cache validation option instead."
320
+ warn '[DEPRECATION NOTICE] Schema caching is now a validation option. Schemas will still be cached if this is set to true, but this method will be removed in version >= 3. Please use the :clear_cache validation option instead.'
320
321
  @@cache_schemas = val == true ? true : false
321
322
  end
322
323
 
@@ -328,32 +329,34 @@ module JSON
328
329
  @@default_validator
329
330
  end
330
331
 
331
- def validator_for_uri(schema_uri, raise_not_found=true)
332
+ def validator_for_uri(schema_uri, raise_not_found = true)
332
333
  return default_validator unless schema_uri
334
+
333
335
  u = JSON::Util::URI.parse(schema_uri)
334
336
  validator = validators["#{u.scheme}://#{u.host}#{u.path}"]
335
337
  if validator.nil? && raise_not_found
336
- raise JSON::Schema::SchemaError.new("Schema not found: #{schema_uri}")
338
+ raise JSON::Schema::SchemaError, "Schema not found: #{schema_uri}"
337
339
  else
338
340
  validator
339
341
  end
340
342
  end
341
343
 
342
- def validator_for_name(schema_name, raise_not_found=true)
344
+ def validator_for_name(schema_name, raise_not_found = true)
343
345
  return default_validator unless schema_name
346
+
344
347
  schema_name = schema_name.to_s
345
348
  validator = validators.values.detect do |v|
346
349
  Array(v.names).include?(schema_name)
347
350
  end
348
351
  if validator.nil? && raise_not_found
349
- raise JSON::Schema::SchemaError.new("The requested JSON schema version is not supported")
352
+ raise JSON::Schema::SchemaError, 'The requested JSON schema version is not supported'
350
353
  else
351
354
  validator
352
355
  end
353
356
  end
354
357
 
355
358
  def validator_for(schema_uri)
356
- warn "[DEPRECATION NOTICE] JSON::Validator#validator_for has been replaced by JSON::Validator#validator_for_uri and will be removed in version >= 3. Please use the #validator_for_uri method instead."
359
+ warn '[DEPRECATION NOTICE] JSON::Validator#validator_for has been replaced by JSON::Validator#validator_for_uri and will be removed in version >= 3. Please use the #validator_for_uri method instead.'
357
360
  validator_for_uri(schema_uri)
358
361
  end
359
362
 
@@ -365,7 +368,7 @@ module JSON
365
368
  @@default_validator = v
366
369
  end
367
370
 
368
- def register_format_validator(format, validation_proc, versions = (@@validators.flat_map{ |k, v| v.names.first } + [nil]))
371
+ def register_format_validator(format, validation_proc, versions = (@@validators.flat_map { |k, v| v.names.first } + [nil]))
369
372
  custom_format_validator = JSON::Schema::CustomFormat.new(validation_proc)
370
373
  versions.each do |version|
371
374
  validator = validator_for_name(version)
@@ -373,14 +376,14 @@ module JSON
373
376
  end
374
377
  end
375
378
 
376
- def deregister_format_validator(format, versions = (@@validators.flat_map{ |k, v| v.names.first } + [nil]))
379
+ def deregister_format_validator(format, versions = (@@validators.flat_map { |k, v| v.names.first } + [nil]))
377
380
  versions.each do |version|
378
381
  validator = validator_for_name(version)
379
382
  validator.formats[format.to_s] = validator.default_formats[format.to_s]
380
383
  end
381
384
  end
382
385
 
383
- def restore_default_formats(versions = (@@validators.flat_map{ |k, v| v.names.first } + [nil]))
386
+ def restore_default_formats(versions = (@@validators.flat_map { |k, v| v.names.first } + [nil]))
384
387
  versions.each do |version|
385
388
  validator = validator_for_name(version)
386
389
  validator.formats = validator.default_formats.clone
@@ -404,7 +407,7 @@ module JSON
404
407
  if @@available_json_backends.include?(backend)
405
408
  @@json_backend = backend
406
409
  else
407
- raise JSON::Schema::JsonParseError.new("The JSON backend '#{backend}' could not be found.")
410
+ raise JSON::Schema::JsonParseError, "The JSON backend '#{backend}' could not be found."
408
411
  end
409
412
  end
410
413
  end
@@ -414,26 +417,26 @@ module JSON
414
417
  begin
415
418
  MultiJson.respond_to?(:adapter) ? MultiJson.load(s) : MultiJson.decode(s)
416
419
  rescue MultiJson::ParseError => e
417
- raise JSON::Schema::JsonParseError.new(e.message)
420
+ raise JSON::Schema::JsonParseError, e.message
418
421
  end
419
422
  else
420
423
  case @@json_backend.to_s
421
424
  when 'json'
422
425
  begin
423
- JSON.parse(s, :quirks_mode => true)
426
+ JSON.parse(s, quirks_mode: true)
424
427
  rescue JSON::ParserError => e
425
- raise JSON::Schema::JsonParseError.new(e.message)
428
+ raise JSON::Schema::JsonParseError, e.message
426
429
  end
427
430
  when 'yajl'
428
431
  begin
429
432
  json = StringIO.new(s)
430
433
  parser = Yajl::Parser.new
431
- parser.parse(json) or raise JSON::Schema::JsonParseError.new("The JSON could not be parsed by yajl")
434
+ parser.parse(json) or raise(JSON::Schema::JsonParseError, 'The JSON could not be parsed by yajl')
432
435
  rescue Yajl::ParseError => e
433
- raise JSON::Schema::JsonParseError.new(e.message)
436
+ raise JSON::Schema::JsonParseError, e.message
434
437
  end
435
438
  else
436
- raise JSON::Schema::JsonParseError.new("No supported JSON parsers found. The following parsers are suported:\n * yajl-ruby\n * json")
439
+ raise JSON::Schema::JsonParseError, "No supported JSON parsers found. The following parsers are suported:\n * yajl-ruby\n * json"
437
440
  end
438
441
  end
439
442
  end
@@ -472,7 +475,6 @@ module JSON
472
475
  end
473
476
  end
474
477
 
475
-
476
478
  if Gem::Specification::find_all_by_name('yajl-ruby').any?
477
479
  require 'yajl'
478
480
  @@available_json_backends << 'yajl'
@@ -480,11 +482,11 @@ module JSON
480
482
  end
481
483
 
482
484
  if @@json_backend == 'yajl'
483
- @@serializer = lambda{|o| Yajl::Encoder.encode(o) }
485
+ @@serializer = lambda { |o| Yajl::Encoder.encode(o) }
484
486
  elsif @@json_backend == 'json'
485
- @@serializer = lambda{|o| JSON.dump(o) }
487
+ @@serializer = lambda { |o| JSON.dump(o) }
486
488
  else
487
- @@serializer = lambda{|o| YAML.dump(o) }
489
+ @@serializer = lambda { |o| YAML.dump(o) }
488
490
  end
489
491
  end
490
492
  end
@@ -493,10 +495,10 @@ module JSON
493
495
 
494
496
  if Gem::Specification::find_all_by_name('uuidtools').any?
495
497
  require 'uuidtools'
496
- @@fake_uuid_generator = lambda{|s| UUIDTools::UUID.sha1_create(UUIDTools::UUID_URL_NAMESPACE, s).to_s }
498
+ @@fake_uuid_generator = lambda { |s| UUIDTools::UUID.sha1_create(UUIDTools::UUID_URL_NAMESPACE, s).to_s }
497
499
  else
498
500
  require 'json-schema/util/uuid'
499
- @@fake_uuid_generator = lambda{|s| JSON::Util::UUID.create_v5(s,JSON::Util::UUID::Nil).to_s }
501
+ @@fake_uuid_generator = lambda { |s| JSON::Util::UUID.create_v5(s, JSON::Util::UUID::Nil).to_s }
500
502
  end
501
503
 
502
504
  def serialize schema
@@ -552,7 +554,7 @@ module JSON
552
554
  end
553
555
  self.class.add_schema(schema)
554
556
  else
555
- raise JSON::Schema::SchemaParseError, "Invalid schema - must be either a string or a hash"
557
+ raise JSON::Schema::SchemaParseError, 'Invalid schema - must be either a string or a hash'
556
558
  end
557
559
 
558
560
  schema
@@ -2,27 +2,26 @@ require 'json-schema/schema/validator'
2
2
 
3
3
  module JSON
4
4
  class Schema
5
-
6
5
  class Draft1 < Validator
7
6
  def initialize
8
7
  super
9
8
  @attributes = {
10
- "type" => JSON::Schema::TypeAttribute,
11
- "disallow" => JSON::Schema::DisallowAttribute,
12
- "format" => JSON::Schema::FormatAttribute,
13
- "maximum" => JSON::Schema::MaximumInclusiveAttribute,
14
- "minimum" => JSON::Schema::MinimumInclusiveAttribute,
15
- "minItems" => JSON::Schema::MinItemsAttribute,
16
- "maxItems" => JSON::Schema::MaxItemsAttribute,
17
- "minLength" => JSON::Schema::MinLengthAttribute,
18
- "maxLength" => JSON::Schema::MaxLengthAttribute,
19
- "maxDecimal" => JSON::Schema::MaxDecimalAttribute,
20
- "enum" => JSON::Schema::EnumAttribute,
21
- "properties" => JSON::Schema::PropertiesOptionalAttribute,
22
- "pattern" => JSON::Schema::PatternAttribute,
23
- "additionalProperties" => JSON::Schema::AdditionalPropertiesAttribute,
24
- "items" => JSON::Schema::ItemsAttribute,
25
- "extends" => JSON::Schema::ExtendsAttribute
9
+ 'type' => JSON::Schema::TypeAttribute,
10
+ 'disallow' => JSON::Schema::DisallowAttribute,
11
+ 'format' => JSON::Schema::FormatAttribute,
12
+ 'maximum' => JSON::Schema::MaximumInclusiveAttribute,
13
+ 'minimum' => JSON::Schema::MinimumInclusiveAttribute,
14
+ 'minItems' => JSON::Schema::MinItemsAttribute,
15
+ 'maxItems' => JSON::Schema::MaxItemsAttribute,
16
+ 'minLength' => JSON::Schema::MinLengthAttribute,
17
+ 'maxLength' => JSON::Schema::MaxLengthAttribute,
18
+ 'maxDecimal' => JSON::Schema::MaxDecimalAttribute,
19
+ 'enum' => JSON::Schema::EnumAttribute,
20
+ 'properties' => JSON::Schema::PropertiesOptionalAttribute,
21
+ 'pattern' => JSON::Schema::PatternAttribute,
22
+ 'additionalProperties' => JSON::Schema::AdditionalPropertiesAttribute,
23
+ 'items' => JSON::Schema::ItemsAttribute,
24
+ 'extends' => JSON::Schema::ExtendsAttribute,
26
25
  }
27
26
  @default_formats = {
28
27
  'date-time' => DateTimeFormat,
@@ -30,16 +29,15 @@ module JSON
30
29
  'time' => TimeFormat,
31
30
  'ip-address' => IP4Format,
32
31
  'ipv6' => IP6Format,
33
- 'uri' => UriFormat
32
+ 'uri' => UriFormat,
34
33
  }
35
34
  @formats = @default_formats.clone
36
- @uri = JSON::Util::URI.parse("http://json-schema.org/draft-01/schema#")
37
- @names = ["draft1"]
38
- @metaschema_name = "draft-01.json"
35
+ @uri = JSON::Util::URI.parse('http://json-schema.org/draft-01/schema#')
36
+ @names = ['draft1']
37
+ @metaschema_name = 'draft-01.json'
39
38
  end
40
39
 
41
- JSON::Validator.register_validator(self.new)
40
+ JSON::Validator.register_validator(new)
42
41
  end
43
-
44
42
  end
45
43
  end
@@ -2,28 +2,27 @@ require 'json-schema/schema/validator'
2
2
 
3
3
  module JSON
4
4
  class Schema
5
-
6
5
  class Draft2 < Validator
7
6
  def initialize
8
7
  super
9
8
  @attributes = {
10
- "type" => JSON::Schema::TypeAttribute,
11
- "disallow" => JSON::Schema::DisallowAttribute,
12
- "format" => JSON::Schema::FormatAttribute,
13
- "maximum" => JSON::Schema::MaximumInclusiveAttribute,
14
- "minimum" => JSON::Schema::MinimumInclusiveAttribute,
15
- "minItems" => JSON::Schema::MinItemsAttribute,
16
- "maxItems" => JSON::Schema::MaxItemsAttribute,
17
- "uniqueItems" => JSON::Schema::UniqueItemsAttribute,
18
- "minLength" => JSON::Schema::MinLengthAttribute,
19
- "maxLength" => JSON::Schema::MaxLengthAttribute,
20
- "divisibleBy" => JSON::Schema::DivisibleByAttribute,
21
- "enum" => JSON::Schema::EnumAttribute,
22
- "properties" => JSON::Schema::PropertiesOptionalAttribute,
23
- "pattern" => JSON::Schema::PatternAttribute,
24
- "additionalProperties" => JSON::Schema::AdditionalPropertiesAttribute,
25
- "items" => JSON::Schema::ItemsAttribute,
26
- "extends" => JSON::Schema::ExtendsAttribute
9
+ 'type' => JSON::Schema::TypeAttribute,
10
+ 'disallow' => JSON::Schema::DisallowAttribute,
11
+ 'format' => JSON::Schema::FormatAttribute,
12
+ 'maximum' => JSON::Schema::MaximumInclusiveAttribute,
13
+ 'minimum' => JSON::Schema::MinimumInclusiveAttribute,
14
+ 'minItems' => JSON::Schema::MinItemsAttribute,
15
+ 'maxItems' => JSON::Schema::MaxItemsAttribute,
16
+ 'uniqueItems' => JSON::Schema::UniqueItemsAttribute,
17
+ 'minLength' => JSON::Schema::MinLengthAttribute,
18
+ 'maxLength' => JSON::Schema::MaxLengthAttribute,
19
+ 'divisibleBy' => JSON::Schema::DivisibleByAttribute,
20
+ 'enum' => JSON::Schema::EnumAttribute,
21
+ 'properties' => JSON::Schema::PropertiesOptionalAttribute,
22
+ 'pattern' => JSON::Schema::PatternAttribute,
23
+ 'additionalProperties' => JSON::Schema::AdditionalPropertiesAttribute,
24
+ 'items' => JSON::Schema::ItemsAttribute,
25
+ 'extends' => JSON::Schema::ExtendsAttribute,
27
26
  }
28
27
  @default_formats = {
29
28
  'date-time' => DateTimeFormat,
@@ -31,16 +30,15 @@ module JSON
31
30
  'time' => TimeFormat,
32
31
  'ip-address' => IP4Format,
33
32
  'ipv6' => IP6Format,
34
- 'uri' => UriFormat
33
+ 'uri' => UriFormat,
35
34
  }
36
35
  @formats = @default_formats.clone
37
- @uri = JSON::Util::URI.parse("http://json-schema.org/draft-02/schema#")
38
- @names = ["draft2"]
39
- @metaschema_name = "draft-02.json"
36
+ @uri = JSON::Util::URI.parse('http://json-schema.org/draft-02/schema#')
37
+ @names = ['draft2']
38
+ @metaschema_name = 'draft-02.json'
40
39
  end
41
40
 
42
- JSON::Validator.register_validator(self.new)
41
+ JSON::Validator.register_validator(new)
43
42
  end
44
-
45
43
  end
46
44
  end
@@ -2,32 +2,31 @@ require 'json-schema/schema/validator'
2
2
 
3
3
  module JSON
4
4
  class Schema
5
-
6
5
  class Draft3 < Validator
7
6
  def initialize
8
7
  super
9
8
  @attributes = {
10
- "type" => JSON::Schema::TypeAttribute,
11
- "disallow" => JSON::Schema::DisallowAttribute,
12
- "format" => JSON::Schema::FormatAttribute,
13
- "maximum" => JSON::Schema::MaximumAttribute,
14
- "minimum" => JSON::Schema::MinimumAttribute,
15
- "minItems" => JSON::Schema::MinItemsAttribute,
16
- "maxItems" => JSON::Schema::MaxItemsAttribute,
17
- "uniqueItems" => JSON::Schema::UniqueItemsAttribute,
18
- "minLength" => JSON::Schema::MinLengthAttribute,
19
- "maxLength" => JSON::Schema::MaxLengthAttribute,
20
- "divisibleBy" => JSON::Schema::DivisibleByAttribute,
21
- "enum" => JSON::Schema::EnumAttribute,
22
- "properties" => JSON::Schema::PropertiesAttribute,
23
- "pattern" => JSON::Schema::PatternAttribute,
24
- "patternProperties" => JSON::Schema::PatternPropertiesAttribute,
25
- "additionalProperties" => JSON::Schema::AdditionalPropertiesAttribute,
26
- "items" => JSON::Schema::ItemsAttribute,
27
- "additionalItems" => JSON::Schema::AdditionalItemsAttribute,
28
- "dependencies" => JSON::Schema::DependenciesAttribute,
29
- "extends" => JSON::Schema::ExtendsAttribute,
30
- "$ref" => JSON::Schema::RefAttribute
9
+ 'type' => JSON::Schema::TypeAttribute,
10
+ 'disallow' => JSON::Schema::DisallowAttribute,
11
+ 'format' => JSON::Schema::FormatAttribute,
12
+ 'maximum' => JSON::Schema::MaximumAttribute,
13
+ 'minimum' => JSON::Schema::MinimumAttribute,
14
+ 'minItems' => JSON::Schema::MinItemsAttribute,
15
+ 'maxItems' => JSON::Schema::MaxItemsAttribute,
16
+ 'uniqueItems' => JSON::Schema::UniqueItemsAttribute,
17
+ 'minLength' => JSON::Schema::MinLengthAttribute,
18
+ 'maxLength' => JSON::Schema::MaxLengthAttribute,
19
+ 'divisibleBy' => JSON::Schema::DivisibleByAttribute,
20
+ 'enum' => JSON::Schema::EnumAttribute,
21
+ 'properties' => JSON::Schema::PropertiesAttribute,
22
+ 'pattern' => JSON::Schema::PatternAttribute,
23
+ 'patternProperties' => JSON::Schema::PatternPropertiesAttribute,
24
+ 'additionalProperties' => JSON::Schema::AdditionalPropertiesAttribute,
25
+ 'items' => JSON::Schema::ItemsAttribute,
26
+ 'additionalItems' => JSON::Schema::AdditionalItemsAttribute,
27
+ 'dependencies' => JSON::Schema::DependenciesAttribute,
28
+ 'extends' => JSON::Schema::ExtendsAttribute,
29
+ '$ref' => JSON::Schema::RefAttribute,
31
30
  }
32
31
  @default_formats = {
33
32
  'date-time' => DateTimeFormat,
@@ -35,16 +34,15 @@ module JSON
35
34
  'ip-address' => IP4Format,
36
35
  'ipv6' => IP6Format,
37
36
  'time' => TimeFormat,
38
- 'uri' => UriFormat
37
+ 'uri' => UriFormat,
39
38
  }
40
39
  @formats = @default_formats.clone
41
- @uri = JSON::Util::URI.parse("http://json-schema.org/draft-03/schema#")
42
- @names = ["draft3", "http://json-schema.org/draft-03/schema#"]
43
- @metaschema_name = "draft-03.json"
40
+ @uri = JSON::Util::URI.parse('http://json-schema.org/draft-03/schema#')
41
+ @names = ['draft3', 'http://json-schema.org/draft-03/schema#']
42
+ @metaschema_name = 'draft-03.json'
44
43
  end
45
44
 
46
- JSON::Validator.register_validator(self.new)
45
+ JSON::Validator.register_validator(new)
47
46
  end
48
-
49
47
  end
50
48
  end