json_schemer 0.1.3 → 0.1.4

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.
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JSONSchemer
4
+ module Schema
5
+ class Draft4 < Base
6
+ ID_KEYWORD = 'id'
7
+ SUPPORTED_FORMATS = Set[
8
+ 'date-time',
9
+ 'email',
10
+ 'hostname',
11
+ 'ipv4',
12
+ 'ipv6',
13
+ 'uri'
14
+ ].freeze
15
+
16
+ private
17
+
18
+ def id_keyword
19
+ ID_KEYWORD
20
+ end
21
+
22
+ def supported_format?(format)
23
+ SUPPORTED_FORMATS.include?(format)
24
+ end
25
+
26
+ def validate_exclusive_maximum(data, schema, pointer, exclusive_maximum, maximum)
27
+ yield error(data, schema, pointer, 'exclusiveMaximum') if exclusive_maximum && data >= maximum
28
+ end
29
+
30
+ def validate_exclusive_minimum(data, schema, pointer, exclusive_minimum, minimum)
31
+ yield error(data, schema, pointer, 'exclusiveMinimum') if exclusive_minimum && data <= minimum
32
+ end
33
+
34
+ def validate_integer(data, schema, pointer)
35
+ if !data.is_a?(Integer)
36
+ yield error(data, schema, pointer, 'integer')
37
+ return
38
+ end
39
+
40
+ validate_numeric(data, schema, pointer, &Proc.new)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JSONSchemer
4
+ module Schema
5
+ class Draft6 < Base
6
+ SUPPORTED_FORMATS = Set[
7
+ 'date-time',
8
+ 'email',
9
+ 'hostname',
10
+ 'ipv4',
11
+ 'ipv6',
12
+ 'uri',
13
+ 'uri-reference',
14
+ 'uri-template',
15
+ 'json-pointer'
16
+ ].freeze
17
+
18
+ private
19
+
20
+ def supported_format?(format)
21
+ SUPPORTED_FORMATS.include?(format)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JSONSchemer
4
+ module Schema
5
+ class Draft7 < Base
6
+ SUPPORTED_FORMATS = Set[
7
+ 'date-time',
8
+ 'date',
9
+ 'time',
10
+ 'email',
11
+ 'idn-email',
12
+ 'hostname',
13
+ 'idn-hostname',
14
+ 'ipv4',
15
+ 'ipv6',
16
+ 'uri',
17
+ 'uri-reference',
18
+ 'iri',
19
+ 'iri-reference',
20
+ 'uri-template',
21
+ 'json-pointer',
22
+ 'relative-json-pointer',
23
+ 'regex'
24
+ ].freeze
25
+
26
+ private
27
+
28
+ def supported_format?(format)
29
+ SUPPORTED_FORMATS.include?(format)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JSONSchemer
2
- VERSION = "0.1.3"
4
+ VERSION = '0.1.4'
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_schemer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Harsha
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-26 00:00:00.000000000 Z
11
+ date: 2018-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -114,6 +114,10 @@ files:
114
114
  - json_schemer.gemspec
115
115
  - lib/json_schemer.rb
116
116
  - lib/json_schemer/format.rb
117
+ - lib/json_schemer/schema/base.rb
118
+ - lib/json_schemer/schema/draft4.rb
119
+ - lib/json_schemer/schema/draft6.rb
120
+ - lib/json_schemer/schema/draft7.rb
117
121
  - lib/json_schemer/version.rb
118
122
  homepage: https://github.com/davishmcclurg/json_schemer
119
123
  licenses:
@@ -138,5 +142,5 @@ rubyforge_project:
138
142
  rubygems_version: 2.7.3
139
143
  signing_key:
140
144
  specification_version: 4
141
- summary: JSON Schema draft-07 validator
145
+ summary: JSON Schema validator. Supports drafts 4, 6, and 7.
142
146
  test_files: []