json-schema 2.5.2 → 2.6.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.
- checksums.yaml +4 -4
- data/README.textile +1 -1
- data/lib/json-schema/attributes/formats/date.rb +2 -1
- data/lib/json-schema/attributes/formats/date_time.rb +6 -8
- data/lib/json-schema/attributes/formats/uri.rb +4 -3
- data/lib/json-schema/attributes/not.rb +1 -1
- data/lib/json-schema/attributes/ref.rb +17 -14
- data/lib/json-schema/errors/json_load_error.rb +6 -0
- data/lib/json-schema/errors/schema_parse_error.rb +8 -0
- data/lib/json-schema/errors/uri_error.rb +6 -0
- data/lib/json-schema/schema.rb +2 -3
- data/lib/json-schema/schema/reader.rb +5 -6
- data/lib/json-schema/util/uri.rb +56 -8
- data/lib/json-schema/validator.rb +51 -33
- data/lib/json-schema/validators/draft1.rb +4 -4
- data/lib/json-schema/validators/draft2.rb +4 -4
- data/lib/json-schema/validators/draft3.rb +4 -4
- data/lib/json-schema/validators/draft4.rb +1 -1
- data/lib/json-schema/validators/hyper-draft1.rb +1 -1
- data/lib/json-schema/validators/hyper-draft2.rb +1 -1
- data/lib/json-schema/validators/hyper-draft4.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a58ce34e91bb60549bef3c7018d69636c87052a8
|
4
|
+
data.tar.gz: 22573ae4c67684bc8e180876fe7485cf24baed19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 074129e7c341baadf05037ef05b9bc3a7c72f0414e420d92b74f4e25acbb6a42da478bfb7d658e4150887156455cb71575e3a02d877be50a0a482210ef08c6e5
|
7
|
+
data.tar.gz: c05121d91c8cd2f2a0d3a21e91fccb4a902b24b30bf8f594c6ef3f3c434b586422565cb526894632c10f91ea0248c9ca062d8b1afb8048ae64843bfaac7b9b01
|
data/README.textile
CHANGED
@@ -214,7 +214,7 @@ schema = {
|
|
214
214
|
"type" => "object",
|
215
215
|
"required" => ["a"],
|
216
216
|
"properties" => {
|
217
|
-
"a" => {"type" => "integer"} # This will fail schema validation!
|
217
|
+
"a" => {"type" => "integer", "required" => "true"} # This will fail schema validation!
|
218
218
|
}
|
219
219
|
}
|
220
220
|
|
@@ -11,7 +11,8 @@ module JSON
|
|
11
11
|
if REGEXP.match(data)
|
12
12
|
begin
|
13
13
|
Date.parse(data)
|
14
|
-
rescue
|
14
|
+
rescue ArgumentError => e
|
15
|
+
raise e unless e.message == 'invalid date'
|
15
16
|
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors])
|
16
17
|
end
|
17
18
|
else
|
@@ -14,18 +14,16 @@ module JSON
|
|
14
14
|
|
15
15
|
begin
|
16
16
|
Date.parse(parts[0])
|
17
|
-
rescue
|
17
|
+
rescue ArgumentError => e
|
18
|
+
raise e unless e.message == 'invalid date'
|
18
19
|
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors])
|
19
20
|
return
|
20
21
|
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
rescue Exception
|
27
|
-
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors])
|
28
|
-
end
|
23
|
+
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors]) and return if m.length < 4
|
24
|
+
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors]) and return if m[1].to_i > 23
|
25
|
+
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors]) and return if m[2].to_i > 59
|
26
|
+
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors]) and return if m[3].to_i > 59
|
29
27
|
else
|
30
28
|
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors])
|
31
29
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'json-schema/attribute'
|
2
|
-
require '
|
2
|
+
require 'json-schema/errors/uri_error'
|
3
|
+
|
3
4
|
module JSON
|
4
5
|
class Schema
|
5
6
|
class UriFormat < FormatAttribute
|
@@ -7,8 +8,8 @@ module JSON
|
|
7
8
|
return unless data.is_a?(String)
|
8
9
|
error_message = "The property '#{build_fragment(fragments)}' must be a valid URI"
|
9
10
|
begin
|
10
|
-
|
11
|
-
rescue
|
11
|
+
JSON::Util::URI.parse(data)
|
12
|
+
rescue JSON::Schema::UriError
|
12
13
|
validation_error(processor, error_message, fragments, current_schema, self, options[:record_errors])
|
13
14
|
end
|
14
15
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'json-schema/attribute'
|
2
2
|
require 'json-schema/errors/schema_error'
|
3
|
+
require 'json-schema/util/uri'
|
3
4
|
|
4
5
|
module JSON
|
5
6
|
class Schema
|
@@ -21,21 +22,23 @@ module JSON
|
|
21
22
|
def self.get_referenced_uri_and_schema(s, current_schema, validator)
|
22
23
|
uri,schema = nil,nil
|
23
24
|
|
24
|
-
temp_uri =
|
25
|
-
|
26
|
-
temp_uri
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
25
|
+
temp_uri = JSON::Util::URI.parse(s['$ref'])
|
26
|
+
temp_uri.defer_validation do
|
27
|
+
if temp_uri.relative?
|
28
|
+
temp_uri.merge!(current_schema.uri)
|
29
|
+
# Check for absolute path
|
30
|
+
path, fragment = s['$ref'].split("#")
|
31
|
+
if path.nil? || path == ''
|
32
|
+
temp_uri.path = current_schema.uri.path
|
33
|
+
elsif path[0,1] == "/"
|
34
|
+
temp_uri.path = Pathname.new(path).cleanpath.to_s
|
35
|
+
else
|
36
|
+
temp_uri.join!(path)
|
37
|
+
end
|
38
|
+
temp_uri.fragment = fragment
|
35
39
|
end
|
36
|
-
temp_uri.fragment =
|
40
|
+
temp_uri.fragment = "" if temp_uri.fragment.nil? || temp_uri.fragment.empty?
|
37
41
|
end
|
38
|
-
temp_uri.fragment = "" if temp_uri.fragment.nil?
|
39
42
|
|
40
43
|
# Grab the parent schema from the schema list
|
41
44
|
schema_key = temp_uri.to_s.split("#")[0] + "#"
|
@@ -49,7 +52,7 @@ module JSON
|
|
49
52
|
fragment_path = ''
|
50
53
|
fragments.each do |fragment|
|
51
54
|
if fragment && fragment != ''
|
52
|
-
fragment =
|
55
|
+
fragment = JSON::Util::URI.unescaped_uri(fragment.gsub('~0', '~').gsub('~1', '/'))
|
53
56
|
if target_schema.is_a?(Array)
|
54
57
|
target_schema = target_schema[fragment.to_i]
|
55
58
|
else
|
data/lib/json-schema/schema.rb
CHANGED
@@ -11,13 +11,13 @@ module JSON
|
|
11
11
|
|
12
12
|
# If there is an ID on this schema, use it to generate the URI
|
13
13
|
if @schema['id'] && @schema['id'].kind_of?(String)
|
14
|
-
temp_uri =
|
14
|
+
temp_uri = JSON::Util::URI.parse(@schema['id'])
|
15
15
|
if temp_uri.relative?
|
16
16
|
temp_uri = uri.join(temp_uri)
|
17
17
|
end
|
18
18
|
@uri = temp_uri
|
19
19
|
end
|
20
|
-
@uri
|
20
|
+
@uri = JSON::Util::URI.strip_fragment(@uri)
|
21
21
|
|
22
22
|
# If there is a $schema on this schema, use it to determine which validator to use
|
23
23
|
if @schema['$schema']
|
@@ -60,4 +60,3 @@ module JSON
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
63
|
-
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'open-uri'
|
2
|
-
require 'addressable/uri'
|
3
2
|
require 'pathname'
|
4
3
|
|
5
4
|
module JSON
|
@@ -57,12 +56,12 @@ module JSON
|
|
57
56
|
# @param location [#to_s] The location from which to read the schema
|
58
57
|
# @return [JSON::Schema]
|
59
58
|
# @raise [JSON::Schema::ReadRefused] if +accept_uri+ or +accept_file+
|
60
|
-
# indicated the schema
|
61
|
-
# @raise [JSON::
|
59
|
+
# indicated the schema could not be read
|
60
|
+
# @raise [JSON::Schema::ParseError] if the schema was not a valid JSON object
|
62
61
|
def read(location)
|
63
|
-
uri =
|
62
|
+
uri = JSON::Util::URI.parse(location.to_s)
|
64
63
|
body = if uri.scheme.nil? || uri.scheme == 'file'
|
65
|
-
uri =
|
64
|
+
uri = JSON::Util::URI.file_uri(uri)
|
66
65
|
read_file(Pathname.new(uri.path).expand_path)
|
67
66
|
else
|
68
67
|
read_uri(uri)
|
@@ -103,7 +102,7 @@ module JSON
|
|
103
102
|
|
104
103
|
def read_file(pathname)
|
105
104
|
if accept_file?(pathname)
|
106
|
-
File.read(
|
105
|
+
File.read(JSON::Util::URI.unescaped_uri(pathname.to_s))
|
107
106
|
else
|
108
107
|
raise JSON::Schema::ReadRefused.new(pathname.to_s, :file)
|
109
108
|
end
|
data/lib/json-schema/util/uri.rb
CHANGED
@@ -1,15 +1,63 @@
|
|
1
|
+
require 'addressable/uri'
|
2
|
+
|
1
3
|
module JSON
|
2
4
|
module Util
|
3
5
|
module URI
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
SUPPORTED_PROTOCOLS = %w(http https ftp tftp sftp ssh svn+ssh telnet nntp gopher wais ldap prospero)
|
7
|
+
|
8
|
+
def self.normalized_uri(uri, base_path = Dir.pwd)
|
9
|
+
@normalize_cache ||= {}
|
10
|
+
normalized_uri = @normalize_cache[uri]
|
11
|
+
|
12
|
+
if !normalized_uri
|
13
|
+
normalized_uri = parse(uri)
|
14
|
+
# Check for absolute path
|
15
|
+
if normalized_uri.relative?
|
16
|
+
data = normalized_uri
|
17
|
+
data = File.join(base_path, data) if data.path[0,1] != "/"
|
18
|
+
normalized_uri = file_uri(data)
|
19
|
+
end
|
20
|
+
@normalize_cache[uri] = normalized_uri.freeze
|
11
21
|
end
|
12
|
-
|
22
|
+
|
23
|
+
normalized_uri
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.parse(uri)
|
27
|
+
if uri.is_a?(Addressable::URI)
|
28
|
+
return uri.dup
|
29
|
+
else
|
30
|
+
@parse_cache ||= {}
|
31
|
+
parsed_uri = @parse_cache[uri]
|
32
|
+
if parsed_uri
|
33
|
+
parsed_uri.dup
|
34
|
+
else
|
35
|
+
@parse_cache[uri] = Addressable::URI.parse(uri)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
rescue Addressable::URI::InvalidURIError => e
|
39
|
+
raise JSON::Schema::UriError.new(e.message)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.strip_fragment(uri)
|
43
|
+
parsed_uri = parse(uri)
|
44
|
+
if parsed_uri.fragment.nil? || parsed_uri.fragment.empty?
|
45
|
+
parsed_uri
|
46
|
+
else
|
47
|
+
parsed_uri.merge(:fragment => "")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.file_uri(uri)
|
52
|
+
parsed_uri = parse(uri)
|
53
|
+
|
54
|
+
Addressable::URI.convert_path(parsed_uri.path)
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.unescaped_uri(uri)
|
58
|
+
parsed_uri = parse(uri)
|
59
|
+
|
60
|
+
Addressable::URI.unescape(parsed_uri.path)
|
13
61
|
end
|
14
62
|
end
|
15
63
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'addressable/uri'
|
2
1
|
require 'open-uri'
|
3
2
|
require 'pathname'
|
4
3
|
require 'bigdecimal'
|
@@ -9,7 +8,10 @@ require 'yaml'
|
|
9
8
|
|
10
9
|
require 'json-schema/schema/reader'
|
11
10
|
require 'json-schema/errors/schema_error'
|
11
|
+
require 'json-schema/errors/schema_parse_error'
|
12
|
+
require 'json-schema/errors/json_load_error'
|
12
13
|
require 'json-schema/errors/json_parse_error'
|
14
|
+
require 'json-schema/util/uri'
|
13
15
|
|
14
16
|
module JSON
|
15
17
|
|
@@ -55,17 +57,13 @@ module JSON
|
|
55
57
|
|
56
58
|
# validate the schema, if requested
|
57
59
|
if @options[:validate_schema]
|
58
|
-
|
59
|
-
|
60
|
-
base_validator = JSON::Validator.validator_for_name(@base_schema.schema["$schema"])
|
61
|
-
end
|
62
|
-
metaschema = base_validator ? base_validator.metaschema : validator.metaschema
|
63
|
-
# Don't clear the cache during metaschema validation!
|
64
|
-
meta_validator = JSON::Validator.new(metaschema, @base_schema.schema, {:clear_cache => false})
|
65
|
-
meta_validator.validate
|
66
|
-
rescue JSON::Schema::ValidationError, JSON::Schema::SchemaError
|
67
|
-
raise $!
|
60
|
+
if @base_schema.schema["$schema"]
|
61
|
+
base_validator = JSON::Validator.validator_for_name(@base_schema.schema["$schema"])
|
68
62
|
end
|
63
|
+
metaschema = base_validator ? base_validator.metaschema : validator.metaschema
|
64
|
+
# Don't clear the cache during metaschema validation!
|
65
|
+
meta_validator = JSON::Validator.new(metaschema, @base_schema.schema, {:clear_cache => false})
|
66
|
+
meta_validator.validate
|
69
67
|
end
|
70
68
|
|
71
69
|
# If the :fragment option is set, try and validate against the fragment
|
@@ -138,15 +136,13 @@ module JSON
|
|
138
136
|
end
|
139
137
|
|
140
138
|
def absolutize_ref_uri(ref, parent_schema_uri)
|
141
|
-
ref_uri =
|
142
|
-
ref_uri.fragment = ''
|
139
|
+
ref_uri = JSON::Util::URI.strip_fragment(ref)
|
143
140
|
|
144
141
|
return ref_uri if ref_uri.absolute?
|
145
142
|
# This is a self reference and thus the schema does not need to be re-loaded
|
146
143
|
return parent_schema_uri if ref_uri.path.empty?
|
147
144
|
|
148
|
-
uri = parent_schema_uri.
|
149
|
-
uri.fragment = ''
|
145
|
+
uri = JSON::Util::URI.strip_fragment(parent_schema_uri.dup)
|
150
146
|
Util::URI.normalized_uri(uri.join(ref_uri.path))
|
151
147
|
end
|
152
148
|
|
@@ -222,7 +218,7 @@ module JSON
|
|
222
218
|
# Either load a reference schema or create a new schema
|
223
219
|
def handle_schema(parent_schema, obj)
|
224
220
|
if obj.is_a?(Hash)
|
225
|
-
schema_uri = parent_schema.uri.
|
221
|
+
schema_uri = parent_schema.uri.dup
|
226
222
|
schema = JSON::Schema.new(obj, schema_uri, parent_schema.validator)
|
227
223
|
if obj['id']
|
228
224
|
Validator.add_schema(schema)
|
@@ -344,7 +340,7 @@ module JSON
|
|
344
340
|
|
345
341
|
def validator_for_uri(schema_uri)
|
346
342
|
return default_validator unless schema_uri
|
347
|
-
u =
|
343
|
+
u = JSON::Util::URI.parse(schema_uri)
|
348
344
|
validator = validators["#{u.scheme}://#{u.host}#{u.path}"]
|
349
345
|
if validator.nil?
|
350
346
|
raise JSON::Schema::SchemaError.new("Schema not found: #{schema_uri}")
|
@@ -416,15 +412,27 @@ module JSON
|
|
416
412
|
|
417
413
|
def parse(s)
|
418
414
|
if defined?(MultiJson)
|
419
|
-
|
415
|
+
begin
|
416
|
+
MultiJson.respond_to?(:adapter) ? MultiJson.load(s) : MultiJson.decode(s)
|
417
|
+
rescue MultiJson::ParseError => e
|
418
|
+
raise JSON::Schema::JsonParseError.new(e.message)
|
419
|
+
end
|
420
420
|
else
|
421
421
|
case @@json_backend.to_s
|
422
422
|
when 'json'
|
423
|
-
|
423
|
+
begin
|
424
|
+
JSON.parse(s, :quirks_mode => true)
|
425
|
+
rescue JSON::ParserError => e
|
426
|
+
raise JSON::Schema::JsonParseError.new(e.message)
|
427
|
+
end
|
424
428
|
when 'yajl'
|
425
|
-
|
426
|
-
|
427
|
-
|
429
|
+
begin
|
430
|
+
json = StringIO.new(s)
|
431
|
+
parser = Yajl::Parser.new
|
432
|
+
parser.parse(json) or raise JSON::Schema::JsonParseError.new("The JSON could not be parsed by yajl")
|
433
|
+
rescue Yajl::ParseError => e
|
434
|
+
raise JSON::Schema::JsonParseError.new(e.message)
|
435
|
+
end
|
428
436
|
else
|
429
437
|
raise JSON::Schema::JsonParseError.new("No supported JSON parsers found. The following parsers are suported:\n * yajl-ruby\n * json")
|
430
438
|
end
|
@@ -474,6 +482,8 @@ module JSON
|
|
474
482
|
|
475
483
|
if @@json_backend == 'yajl'
|
476
484
|
@@serializer = lambda{|o| Yajl::Encoder.encode(o) }
|
485
|
+
elsif @@json_backend == 'json'
|
486
|
+
@@serializer = lambda{|o| JSON.dump(o) }
|
477
487
|
else
|
478
488
|
@@serializer = lambda{|o| YAML.dump(o) }
|
479
489
|
end
|
@@ -522,13 +532,13 @@ module JSON
|
|
522
532
|
if schema.is_a?(String)
|
523
533
|
begin
|
524
534
|
# Build a fake URI for this
|
525
|
-
schema_uri =
|
535
|
+
schema_uri = JSON::Util::URI.parse(fake_uuid(schema))
|
526
536
|
schema = JSON::Schema.new(JSON::Validator.parse(schema), schema_uri, @options[:version])
|
527
537
|
if @options[:list] && @options[:fragment].nil?
|
528
538
|
schema = schema.to_array_schema
|
529
539
|
end
|
530
540
|
Validator.add_schema(schema)
|
531
|
-
rescue
|
541
|
+
rescue JSON::Schema::JsonParseError
|
532
542
|
# Build a uri for it
|
533
543
|
schema_uri = Util::URI.normalized_uri(schema)
|
534
544
|
if !self.class.schema_loaded?(schema_uri)
|
@@ -544,14 +554,14 @@ module JSON
|
|
544
554
|
schema = self.class.schema_for_uri(schema_uri)
|
545
555
|
if @options[:list] && @options[:fragment].nil?
|
546
556
|
schema = schema.to_array_schema
|
547
|
-
schema.uri =
|
557
|
+
schema.uri = JSON::Util::URI.parse(fake_uuid(serialize(schema.schema)))
|
548
558
|
Validator.add_schema(schema)
|
549
559
|
end
|
550
560
|
schema
|
551
561
|
end
|
552
562
|
end
|
553
563
|
elsif schema.is_a?(Hash)
|
554
|
-
schema_uri =
|
564
|
+
schema_uri = JSON::Util::URI.parse(fake_uuid(serialize(schema)))
|
555
565
|
schema = JSON::Schema.stringify(schema)
|
556
566
|
schema = JSON::Schema.new(schema, schema_uri, @options[:version])
|
557
567
|
if @options[:list] && @options[:fragment].nil?
|
@@ -559,7 +569,7 @@ module JSON
|
|
559
569
|
end
|
560
570
|
Validator.add_schema(schema)
|
561
571
|
else
|
562
|
-
raise "Invalid schema - must be either a string or a hash"
|
572
|
+
raise SchemaParseError, "Invalid schema - must be either a string or a hash"
|
563
573
|
end
|
564
574
|
|
565
575
|
schema
|
@@ -575,12 +585,12 @@ module JSON
|
|
575
585
|
elsif data.is_a?(String)
|
576
586
|
begin
|
577
587
|
data = JSON::Validator.parse(data)
|
578
|
-
rescue
|
588
|
+
rescue JSON::Schema::JsonParseError
|
579
589
|
begin
|
580
590
|
json_uri = Util::URI.normalized_uri(data)
|
581
591
|
data = JSON::Validator.parse(custom_open(json_uri))
|
582
|
-
rescue
|
583
|
-
# Silently discard the error - the data
|
592
|
+
rescue JSON::Schema::JsonLoadError
|
593
|
+
# Silently discard the error - use the data as-is
|
584
594
|
end
|
585
595
|
end
|
586
596
|
end
|
@@ -590,10 +600,18 @@ module JSON
|
|
590
600
|
|
591
601
|
def custom_open(uri)
|
592
602
|
uri = Util::URI.normalized_uri(uri) if uri.is_a?(String)
|
593
|
-
if uri.absolute? && uri.scheme
|
594
|
-
|
603
|
+
if uri.absolute? && Util::URI::SUPPORTED_PROTOCOLS.include?(uri.scheme)
|
604
|
+
begin
|
605
|
+
open(uri.to_s).read
|
606
|
+
rescue OpenURI::HTTPError, Timeout::Error => e
|
607
|
+
raise JSON::Schema::JsonLoadError, e.message
|
608
|
+
end
|
595
609
|
else
|
596
|
-
|
610
|
+
begin
|
611
|
+
File.read(JSON::Util::URI.unescaped_uri(uri))
|
612
|
+
rescue SystemCallError => e
|
613
|
+
raise JSON::Schema::JsonLoadError, e.message
|
614
|
+
end
|
597
615
|
end
|
598
616
|
end
|
599
617
|
end
|
@@ -2,7 +2,7 @@ require 'json-schema/schema/validator'
|
|
2
2
|
|
3
3
|
module JSON
|
4
4
|
class Schema
|
5
|
-
|
5
|
+
|
6
6
|
class Draft1 < Validator
|
7
7
|
def initialize
|
8
8
|
super
|
@@ -33,13 +33,13 @@ module JSON
|
|
33
33
|
'uri' => UriFormat
|
34
34
|
}
|
35
35
|
@formats = @default_formats.clone
|
36
|
-
@uri =
|
36
|
+
@uri = JSON::Util::URI.parse("http://json-schema.org/draft-01/schema#")
|
37
37
|
@names = ["draft1"]
|
38
38
|
@metaschema_name = "draft-01.json"
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
JSON::Validator.register_validator(self.new)
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
end
|
45
45
|
end
|
@@ -2,7 +2,7 @@ require 'json-schema/schema/validator'
|
|
2
2
|
|
3
3
|
module JSON
|
4
4
|
class Schema
|
5
|
-
|
5
|
+
|
6
6
|
class Draft2 < Validator
|
7
7
|
def initialize
|
8
8
|
super
|
@@ -34,13 +34,13 @@ module JSON
|
|
34
34
|
'uri' => UriFormat
|
35
35
|
}
|
36
36
|
@formats = @default_formats.clone
|
37
|
-
@uri =
|
37
|
+
@uri = JSON::Util::URI.parse("http://json-schema.org/draft-02/schema#")
|
38
38
|
@names = ["draft2"]
|
39
39
|
@metaschema_name = "draft-02.json"
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
JSON::Validator.register_validator(self.new)
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
end
|
46
46
|
end
|
@@ -2,7 +2,7 @@ require 'json-schema/schema/validator'
|
|
2
2
|
|
3
3
|
module JSON
|
4
4
|
class Schema
|
5
|
-
|
5
|
+
|
6
6
|
class Draft3 < Validator
|
7
7
|
def initialize
|
8
8
|
super
|
@@ -38,13 +38,13 @@ module JSON
|
|
38
38
|
'uri' => UriFormat
|
39
39
|
}
|
40
40
|
@formats = @default_formats.clone
|
41
|
-
@uri =
|
41
|
+
@uri = JSON::Util::URI.parse("http://json-schema.org/draft-03/schema#")
|
42
42
|
@names = ["draft3", "http://json-schema.org/draft-03/schema#"]
|
43
43
|
@metaschema_name = "draft-03.json"
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
JSON::Validator.register_validator(self.new)
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
end
|
50
50
|
end
|
@@ -43,7 +43,7 @@ module JSON
|
|
43
43
|
'uri' => UriFormat
|
44
44
|
}
|
45
45
|
@formats = @default_formats.clone
|
46
|
-
@uri =
|
46
|
+
@uri = JSON::Util::URI.parse("http://json-schema.org/draft-04/schema#")
|
47
47
|
@names = ["draft4", "http://json-schema.org/draft-04/schema#"]
|
48
48
|
@metaschema_name = "draft-04.json"
|
49
49
|
end
|
@@ -4,7 +4,7 @@ module JSON
|
|
4
4
|
class HyperDraft1 < Draft1
|
5
5
|
def initialize
|
6
6
|
super
|
7
|
-
@uri =
|
7
|
+
@uri = JSON::Util::URI.parse("http://json-schema.org/draft-01/hyper-schema#")
|
8
8
|
end
|
9
9
|
|
10
10
|
JSON::Validator.register_validator(self.new)
|
@@ -4,7 +4,7 @@ module JSON
|
|
4
4
|
class HyperDraft2 < Draft2
|
5
5
|
def initialize
|
6
6
|
super
|
7
|
-
@uri =
|
7
|
+
@uri = JSON::Util::URI.parse("http://json-schema.org/draft-02/hyper-schema#")
|
8
8
|
end
|
9
9
|
|
10
10
|
JSON::Validator.register_validator(self.new)
|
@@ -4,7 +4,7 @@ module JSON
|
|
4
4
|
class HyperDraft4 < Draft4
|
5
5
|
def initialize
|
6
6
|
super
|
7
|
-
@uri =
|
7
|
+
@uri = JSON::Util::URI.parse("http://json-schema.org/draft-04/hyper-schema#")
|
8
8
|
end
|
9
9
|
|
10
10
|
JSON::Validator.register_validator(self.new)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenny Hoxworth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -125,8 +125,11 @@ files:
|
|
125
125
|
- lib/json-schema/attributes/type_v4.rb
|
126
126
|
- lib/json-schema/attributes/uniqueitems.rb
|
127
127
|
- lib/json-schema/errors/custom_format_error.rb
|
128
|
+
- lib/json-schema/errors/json_load_error.rb
|
128
129
|
- lib/json-schema/errors/json_parse_error.rb
|
129
130
|
- lib/json-schema/errors/schema_error.rb
|
131
|
+
- lib/json-schema/errors/schema_parse_error.rb
|
132
|
+
- lib/json-schema/errors/uri_error.rb
|
130
133
|
- lib/json-schema/errors/validation_error.rb
|
131
134
|
- lib/json-schema/schema.rb
|
132
135
|
- lib/json-schema/schema/reader.rb
|
@@ -166,8 +169,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
169
|
version: '1.8'
|
167
170
|
requirements: []
|
168
171
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.
|
172
|
+
rubygems_version: 2.5.1
|
170
173
|
signing_key:
|
171
174
|
specification_version: 4
|
172
175
|
summary: Ruby JSON Schema Validator
|
173
176
|
test_files: []
|
177
|
+
has_rdoc:
|