jsi 0.8.2 → 0.9.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/.yardopts +3 -2
- data/CHANGELOG.md +8 -3
- data/LICENSE.md +2 -3
- data/README.md +68 -31
- data/docs/Glossary.md +313 -0
- data/jsi.gemspec +1 -0
- data/lib/jsi/base/mutability.rb +4 -0
- data/lib/jsi/base/node.rb +63 -24
- data/lib/jsi/base.rb +556 -173
- data/lib/jsi/metaschema_node/bootstrap_schema.rb +106 -56
- data/lib/jsi/metaschema_node.rb +227 -160
- data/lib/jsi/ptr.rb +32 -15
- data/lib/jsi/ref.rb +197 -0
- data/lib/jsi/registry.rb +311 -0
- data/lib/jsi/schema/cxt/child_application.rb +35 -0
- data/lib/jsi/schema/cxt/inplace_application.rb +37 -0
- data/lib/jsi/schema/cxt.rb +80 -0
- data/lib/jsi/schema/dialect.rb +137 -0
- data/lib/jsi/schema/draft04.rb +113 -5
- data/lib/jsi/schema/draft06.rb +123 -5
- data/lib/jsi/schema/draft07.rb +157 -5
- data/lib/jsi/schema/draft202012.rb +303 -0
- data/lib/jsi/schema/dynamic_anchor_map.rb +63 -0
- data/lib/jsi/schema/element.rb +69 -0
- data/lib/jsi/schema/elements/anchor.rb +13 -0
- data/lib/jsi/schema/elements/array_validation.rb +82 -0
- data/lib/jsi/schema/elements/comment.rb +10 -0
- data/lib/jsi/schema/{validation → elements}/const.rb +11 -7
- data/lib/jsi/schema/elements/contains.rb +59 -0
- data/lib/jsi/schema/elements/contains_minmax.rb +91 -0
- data/lib/jsi/schema/elements/content_encoding.rb +10 -0
- data/lib/jsi/schema/elements/content_media_type.rb +10 -0
- data/lib/jsi/schema/elements/content_schema.rb +16 -0
- data/lib/jsi/schema/elements/default.rb +11 -0
- data/lib/jsi/schema/elements/definitions.rb +19 -0
- data/lib/jsi/schema/elements/dependencies.rb +99 -0
- data/lib/jsi/schema/elements/dependent_required.rb +49 -0
- data/lib/jsi/schema/elements/dependent_schemas.rb +69 -0
- data/lib/jsi/schema/elements/dynamic_ref.rb +69 -0
- data/lib/jsi/schema/elements/enum.rb +26 -0
- data/lib/jsi/schema/elements/examples.rb +10 -0
- data/lib/jsi/schema/elements/format.rb +10 -0
- data/lib/jsi/schema/elements/id.rb +30 -0
- data/lib/jsi/schema/elements/if_then_else.rb +82 -0
- data/lib/jsi/schema/elements/info_bool.rb +10 -0
- data/lib/jsi/schema/elements/info_string.rb +10 -0
- data/lib/jsi/schema/elements/items.rb +93 -0
- data/lib/jsi/schema/elements/items_prefixed.rb +96 -0
- data/lib/jsi/schema/elements/not.rb +31 -0
- data/lib/jsi/schema/elements/numeric.rb +137 -0
- data/lib/jsi/schema/elements/numeric_draft04.rb +77 -0
- data/lib/jsi/schema/elements/object_validation.rb +55 -0
- data/lib/jsi/schema/elements/pattern.rb +35 -0
- data/lib/jsi/schema/elements/properties.rb +145 -0
- data/lib/jsi/schema/elements/property_names.rb +48 -0
- data/lib/jsi/schema/elements/ref.rb +62 -0
- data/lib/jsi/schema/elements/required.rb +34 -0
- data/lib/jsi/schema/elements/self.rb +24 -0
- data/lib/jsi/schema/elements/some_of.rb +180 -0
- data/lib/jsi/schema/elements/string_validation.rb +57 -0
- data/lib/jsi/schema/elements/type.rb +43 -0
- data/lib/jsi/schema/elements/unevaluated_items.rb +54 -0
- data/lib/jsi/schema/elements/unevaluated_properties.rb +54 -0
- data/lib/jsi/schema/elements/xschema.rb +10 -0
- data/lib/jsi/schema/elements/xvocabulary.rb +10 -0
- data/lib/jsi/schema/elements.rb +101 -0
- data/lib/jsi/schema/issue.rb +3 -4
- data/lib/jsi/schema/schema_ancestor_node.rb +103 -50
- data/lib/jsi/schema/vocabulary.rb +36 -0
- data/lib/jsi/schema.rb +519 -337
- data/lib/jsi/schema_classes.rb +168 -124
- data/lib/jsi/schema_set.rb +67 -126
- data/lib/jsi/set.rb +23 -0
- data/lib/jsi/simple_wrap.rb +13 -16
- data/lib/jsi/struct.rb +57 -0
- data/lib/jsi/uri.rb +40 -0
- data/lib/jsi/util/private/memo_map.rb +9 -13
- data/lib/jsi/util/private.rb +57 -12
- data/lib/jsi/util/typelike.rb +19 -64
- data/lib/jsi/util.rb +52 -34
- data/lib/jsi/validation/error.rb +41 -2
- data/lib/jsi/validation/result.rb +118 -71
- data/lib/jsi/validation.rb +1 -6
- data/lib/jsi/version.rb +1 -1
- data/lib/jsi.rb +158 -41
- data/lib/schemas/json-schema.org/draft/2020-12/schema.rb +67 -0
- data/lib/schemas/json-schema.org/draft-04/schema.rb +63 -106
- data/lib/schemas/json-schema.org/draft-06/schema.rb +56 -105
- data/lib/schemas/json-schema.org/draft-07/schema.rb +67 -124
- data/readme.rb +3 -3
- data/{resources}/schemas/2020-12_strict.json +19 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/meta/applicator.json +48 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/meta/content.json +17 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/meta/core.json +51 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/meta/format-annotation.json +14 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/meta/format-assertion.json +14 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/meta/meta-data.json +37 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/meta/unevaluated.json +15 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/meta/validation.json +98 -0
- data/{resources}/schemas/json-schema.org/draft/2020-12/schema.json +58 -0
- metadata +69 -47
- data/lib/jsi/schema/application/child_application/contains.rb +0 -25
- data/lib/jsi/schema/application/child_application/draft04.rb +0 -21
- data/lib/jsi/schema/application/child_application/draft06.rb +0 -28
- data/lib/jsi/schema/application/child_application/draft07.rb +0 -28
- data/lib/jsi/schema/application/child_application/items.rb +0 -18
- data/lib/jsi/schema/application/child_application/properties.rb +0 -25
- data/lib/jsi/schema/application/child_application.rb +0 -13
- data/lib/jsi/schema/application/draft04.rb +0 -8
- data/lib/jsi/schema/application/draft06.rb +0 -8
- data/lib/jsi/schema/application/draft07.rb +0 -8
- data/lib/jsi/schema/application/inplace_application/dependencies.rb +0 -28
- data/lib/jsi/schema/application/inplace_application/draft04.rb +0 -25
- data/lib/jsi/schema/application/inplace_application/draft06.rb +0 -26
- data/lib/jsi/schema/application/inplace_application/draft07.rb +0 -32
- data/lib/jsi/schema/application/inplace_application/ifthenelse.rb +0 -20
- data/lib/jsi/schema/application/inplace_application/ref.rb +0 -18
- data/lib/jsi/schema/application/inplace_application/someof.rb +0 -44
- data/lib/jsi/schema/application/inplace_application.rb +0 -14
- data/lib/jsi/schema/application.rb +0 -12
- data/lib/jsi/schema/ref.rb +0 -186
- data/lib/jsi/schema/validation/array.rb +0 -69
- data/lib/jsi/schema/validation/contains.rb +0 -25
- data/lib/jsi/schema/validation/dependencies.rb +0 -49
- data/lib/jsi/schema/validation/draft04/minmax.rb +0 -93
- data/lib/jsi/schema/validation/draft04.rb +0 -110
- data/lib/jsi/schema/validation/draft06.rb +0 -120
- data/lib/jsi/schema/validation/draft07.rb +0 -157
- data/lib/jsi/schema/validation/enum.rb +0 -25
- data/lib/jsi/schema/validation/ifthenelse.rb +0 -46
- data/lib/jsi/schema/validation/items.rb +0 -54
- data/lib/jsi/schema/validation/not.rb +0 -20
- data/lib/jsi/schema/validation/numeric.rb +0 -121
- data/lib/jsi/schema/validation/object.rb +0 -45
- data/lib/jsi/schema/validation/pattern.rb +0 -34
- data/lib/jsi/schema/validation/properties.rb +0 -101
- data/lib/jsi/schema/validation/property_names.rb +0 -32
- data/lib/jsi/schema/validation/ref.rb +0 -40
- data/lib/jsi/schema/validation/required.rb +0 -27
- data/lib/jsi/schema/validation/someof.rb +0 -90
- data/lib/jsi/schema/validation/string.rb +0 -47
- data/lib/jsi/schema/validation/type.rb +0 -49
- data/lib/jsi/schema/validation.rb +0 -49
- data/lib/jsi/schema_registry.rb +0 -200
- data/lib/jsi/util/private/attr_struct.rb +0 -141
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module JSI
|
|
4
|
-
metaschema_document =
|
|
5
|
-
JSONSchemaDraft06 = JSI.
|
|
6
|
-
|
|
7
|
-
)
|
|
4
|
+
metaschema_document = Util.json_parse_freeze(SCHEMAS_PATH.join('json-schema.org/draft-06/schema.json').read)
|
|
5
|
+
JSONSchemaDraft06 = JSI.new_metaschema_node(metaschema_document,
|
|
6
|
+
dialect: JSI::Schema::Draft06::DIALECT,
|
|
7
|
+
).jsi_schema_module
|
|
8
8
|
|
|
9
9
|
# the JSI schema module for `http://json-schema.org/draft-06/schema`
|
|
10
10
|
module JSONSchemaDraft06
|
|
11
11
|
# @!parse extend JSI::SchemaModule::MetaSchemaModule
|
|
12
|
-
# @!parse include JSI::Schema::Draft06
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
Id = properties['$id']
|
|
@@ -57,93 +56,50 @@ module JSI
|
|
|
57
56
|
SimpleType = definitions['simpleTypes']
|
|
58
57
|
StringArray = definitions['stringArray']
|
|
59
58
|
|
|
60
|
-
module Id
|
|
61
|
-
end
|
|
62
|
-
module
|
|
63
|
-
end
|
|
64
|
-
module
|
|
65
|
-
end
|
|
66
|
-
module
|
|
67
|
-
end
|
|
68
|
-
module
|
|
69
|
-
end
|
|
70
|
-
module
|
|
71
|
-
end
|
|
72
|
-
module
|
|
73
|
-
end
|
|
74
|
-
module
|
|
75
|
-
end
|
|
76
|
-
module
|
|
77
|
-
end
|
|
78
|
-
module
|
|
79
|
-
end
|
|
80
|
-
module
|
|
81
|
-
end
|
|
82
|
-
module
|
|
83
|
-
end
|
|
84
|
-
module
|
|
85
|
-
end
|
|
86
|
-
module
|
|
87
|
-
end
|
|
88
|
-
module
|
|
89
|
-
end
|
|
90
|
-
module
|
|
91
|
-
end
|
|
92
|
-
module
|
|
93
|
-
end
|
|
94
|
-
module
|
|
95
|
-
end
|
|
96
|
-
module
|
|
97
|
-
end
|
|
98
|
-
module UniqueItems
|
|
99
|
-
end
|
|
100
|
-
module Contains
|
|
101
|
-
end
|
|
102
|
-
module MaxProperties
|
|
103
|
-
end
|
|
104
|
-
module MinProperties
|
|
105
|
-
end
|
|
106
|
-
module Required
|
|
107
|
-
end
|
|
108
|
-
module AdditionalProperties
|
|
109
|
-
end
|
|
110
|
-
module Definitions
|
|
111
|
-
end
|
|
112
|
-
module Properties
|
|
113
|
-
end
|
|
114
|
-
module PatternProperties
|
|
115
|
-
end
|
|
116
|
-
module Dependencies
|
|
117
|
-
end
|
|
118
|
-
module PropertyNames
|
|
119
|
-
end
|
|
120
|
-
module Const
|
|
121
|
-
end
|
|
122
|
-
module Enum
|
|
123
|
-
end
|
|
124
|
-
module Type
|
|
125
|
-
end
|
|
126
|
-
module Format
|
|
127
|
-
end
|
|
128
|
-
module AllOf
|
|
129
|
-
end
|
|
130
|
-
module AnyOf
|
|
131
|
-
end
|
|
132
|
-
module OneOf
|
|
133
|
-
end
|
|
134
|
-
module Not
|
|
135
|
-
end
|
|
59
|
+
module Id end
|
|
60
|
+
module Xschema end
|
|
61
|
+
module Ref end
|
|
62
|
+
module Title end
|
|
63
|
+
module Description end
|
|
64
|
+
module Default end
|
|
65
|
+
module Examples end
|
|
66
|
+
module MultipleOf end
|
|
67
|
+
module Maximum end
|
|
68
|
+
module ExclusiveMaximum end
|
|
69
|
+
module Minimum end
|
|
70
|
+
module ExclusiveMinimum end
|
|
71
|
+
module MaxLength end
|
|
72
|
+
module MinLength end
|
|
73
|
+
module Pattern end
|
|
74
|
+
module AdditionalItems end
|
|
75
|
+
module Items end
|
|
76
|
+
module MaxItems end
|
|
77
|
+
module MinItems end
|
|
78
|
+
module UniqueItems end
|
|
79
|
+
module Contains end
|
|
80
|
+
module MaxProperties end
|
|
81
|
+
module MinProperties end
|
|
82
|
+
module Required end
|
|
83
|
+
module AdditionalProperties end
|
|
84
|
+
module Definitions end
|
|
85
|
+
module Properties end
|
|
86
|
+
module PatternProperties end
|
|
87
|
+
module Dependencies end
|
|
88
|
+
module PropertyNames end
|
|
89
|
+
module Const end
|
|
90
|
+
module Enum end
|
|
91
|
+
module Type end
|
|
92
|
+
module Format end
|
|
93
|
+
module AllOf end
|
|
94
|
+
module AnyOf end
|
|
95
|
+
module OneOf end
|
|
96
|
+
module Not end
|
|
136
97
|
|
|
137
|
-
module SchemaArray
|
|
138
|
-
end
|
|
139
|
-
module
|
|
140
|
-
end
|
|
141
|
-
module
|
|
142
|
-
end
|
|
143
|
-
module SimpleType
|
|
144
|
-
end
|
|
145
|
-
module StringArray
|
|
146
|
-
end
|
|
98
|
+
module SchemaArray end
|
|
99
|
+
module NonNegativeInteger end
|
|
100
|
+
module NonNegativeIntegerDefault0 end
|
|
101
|
+
module SimpleType end
|
|
102
|
+
module StringArray end
|
|
147
103
|
|
|
148
104
|
Example = Examples.items
|
|
149
105
|
Dependencies::Dependency = Dependencies.additionalProperties
|
|
@@ -151,21 +107,16 @@ module JSI
|
|
|
151
107
|
NonNegativeIntegerDefault0::Default0 = NonNegativeIntegerDefault0.allOf[1]
|
|
152
108
|
StringItem = StringArray.items
|
|
153
109
|
|
|
154
|
-
module Example
|
|
155
|
-
end
|
|
156
|
-
module
|
|
157
|
-
end
|
|
158
|
-
module
|
|
159
|
-
end
|
|
160
|
-
module NonNegativeIntegerDefault0::Default0
|
|
161
|
-
end
|
|
162
|
-
module StringItem
|
|
163
|
-
end
|
|
110
|
+
module Example end
|
|
111
|
+
module Dependencies::Dependency end
|
|
112
|
+
module Type::Array end
|
|
113
|
+
module NonNegativeIntegerDefault0::Default0 end
|
|
114
|
+
module StringItem end
|
|
164
115
|
end
|
|
165
116
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
module JSONSchemaOrgDraft06
|
|
117
|
+
module JSONSchemaDraft06::PropertyReaders
|
|
118
|
+
def ref(**kw) self['$ref', **kw] end
|
|
119
|
+
def format(**kw) self['format', **kw] end
|
|
170
120
|
end
|
|
121
|
+
JSONSchemaDraft06.include(JSONSchemaDraft06::PropertyReaders)
|
|
171
122
|
end
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module JSI
|
|
4
|
-
metaschema_document =
|
|
5
|
-
JSONSchemaDraft07 = JSI.
|
|
6
|
-
|
|
7
|
-
)
|
|
4
|
+
metaschema_document = Util.json_parse_freeze(SCHEMAS_PATH.join('json-schema.org/draft-07/schema.json').read)
|
|
5
|
+
JSONSchemaDraft07 = JSI.new_metaschema_node(metaschema_document,
|
|
6
|
+
dialect: JSI::Schema::Draft07::DIALECT,
|
|
7
|
+
).jsi_schema_module
|
|
8
8
|
|
|
9
9
|
# the JSI schema module for `http://json-schema.org/draft-07/schema`
|
|
10
10
|
module JSONSchemaDraft07
|
|
11
11
|
# @!parse extend JSI::SchemaModule::MetaSchemaModule
|
|
12
|
-
# @!parse include JSI::Schema::Draft07
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
Id = properties['$id']
|
|
@@ -64,135 +63,79 @@ module JSI
|
|
|
64
63
|
SimpleType = definitions['simpleTypes']
|
|
65
64
|
StringArray = definitions['stringArray']
|
|
66
65
|
|
|
67
|
-
module Id
|
|
68
|
-
end
|
|
69
|
-
module
|
|
70
|
-
end
|
|
71
|
-
module
|
|
72
|
-
end
|
|
73
|
-
module
|
|
74
|
-
end
|
|
75
|
-
module
|
|
76
|
-
end
|
|
77
|
-
module
|
|
78
|
-
end
|
|
79
|
-
module
|
|
80
|
-
end
|
|
81
|
-
module
|
|
82
|
-
end
|
|
83
|
-
module
|
|
84
|
-
end
|
|
85
|
-
module
|
|
86
|
-
end
|
|
87
|
-
module
|
|
88
|
-
end
|
|
89
|
-
module
|
|
90
|
-
end
|
|
91
|
-
module
|
|
92
|
-
end
|
|
93
|
-
module
|
|
94
|
-
end
|
|
95
|
-
module
|
|
96
|
-
end
|
|
97
|
-
module
|
|
98
|
-
end
|
|
99
|
-
module
|
|
100
|
-
end
|
|
101
|
-
module
|
|
102
|
-
end
|
|
103
|
-
module
|
|
104
|
-
end
|
|
105
|
-
module
|
|
106
|
-
end
|
|
107
|
-
module
|
|
108
|
-
end
|
|
109
|
-
module
|
|
110
|
-
end
|
|
111
|
-
module
|
|
112
|
-
end
|
|
113
|
-
module MaxProperties
|
|
114
|
-
end
|
|
115
|
-
module MinProperties
|
|
116
|
-
end
|
|
117
|
-
module Required
|
|
118
|
-
end
|
|
119
|
-
module AdditionalProperties
|
|
120
|
-
end
|
|
121
|
-
module Definitions
|
|
122
|
-
end
|
|
123
|
-
module Properties
|
|
124
|
-
end
|
|
125
|
-
module PatternProperties
|
|
126
|
-
end
|
|
127
|
-
module Dependencies
|
|
128
|
-
end
|
|
129
|
-
module PropertyNames
|
|
130
|
-
end
|
|
131
|
-
module Const
|
|
132
|
-
end
|
|
133
|
-
module Enum
|
|
134
|
-
end
|
|
135
|
-
module Type
|
|
136
|
-
end
|
|
137
|
-
module Format
|
|
138
|
-
end
|
|
139
|
-
module ContentMediaType
|
|
140
|
-
end
|
|
141
|
-
module ContentEncoding
|
|
142
|
-
end
|
|
143
|
-
module If
|
|
144
|
-
end
|
|
145
|
-
module Then
|
|
146
|
-
end
|
|
147
|
-
module Else
|
|
148
|
-
end
|
|
149
|
-
module AllOf
|
|
150
|
-
end
|
|
151
|
-
module AnyOf
|
|
152
|
-
end
|
|
153
|
-
module OneOf
|
|
154
|
-
end
|
|
155
|
-
module Not
|
|
156
|
-
end
|
|
66
|
+
module Id end
|
|
67
|
+
module Xschema end
|
|
68
|
+
module Ref end
|
|
69
|
+
module Comment end
|
|
70
|
+
module Title end
|
|
71
|
+
module Description end
|
|
72
|
+
module Default end
|
|
73
|
+
module ReadOnly end
|
|
74
|
+
module Examples end
|
|
75
|
+
module MultipleOf end
|
|
76
|
+
module Maximum end
|
|
77
|
+
module ExclusiveMaximum end
|
|
78
|
+
module Minimum end
|
|
79
|
+
module ExclusiveMinimum end
|
|
80
|
+
module MaxLength end
|
|
81
|
+
module MinLength end
|
|
82
|
+
module Pattern end
|
|
83
|
+
module AdditionalItems end
|
|
84
|
+
module Items end
|
|
85
|
+
module MaxItems end
|
|
86
|
+
module MinItems end
|
|
87
|
+
module UniqueItems end
|
|
88
|
+
module Contains end
|
|
89
|
+
module MaxProperties end
|
|
90
|
+
module MinProperties end
|
|
91
|
+
module Required end
|
|
92
|
+
module AdditionalProperties end
|
|
93
|
+
module Definitions end
|
|
94
|
+
module Properties end
|
|
95
|
+
module PatternProperties end
|
|
96
|
+
module Dependencies end
|
|
97
|
+
module PropertyNames end
|
|
98
|
+
module Const end
|
|
99
|
+
module Enum end
|
|
100
|
+
module Type end
|
|
101
|
+
module Format end
|
|
102
|
+
module ContentMediaType end
|
|
103
|
+
module ContentEncoding end
|
|
104
|
+
module If end
|
|
105
|
+
module Then end
|
|
106
|
+
module Else end
|
|
107
|
+
module AllOf end
|
|
108
|
+
module AnyOf end
|
|
109
|
+
module OneOf end
|
|
110
|
+
module Not end
|
|
157
111
|
|
|
158
|
-
module SchemaArray
|
|
159
|
-
end
|
|
160
|
-
module
|
|
161
|
-
end
|
|
162
|
-
module
|
|
163
|
-
end
|
|
164
|
-
module SimpleType
|
|
165
|
-
end
|
|
166
|
-
module StringArray
|
|
167
|
-
end
|
|
112
|
+
module SchemaArray end
|
|
113
|
+
module NonNegativeInteger end
|
|
114
|
+
module NonNegativeIntegerDefault0 end
|
|
115
|
+
module SimpleType end
|
|
116
|
+
module StringArray end
|
|
168
117
|
|
|
169
118
|
Example = Examples.items
|
|
170
|
-
|
|
119
|
+
PatternProperties::Pattern = PatternProperties.propertyNames
|
|
171
120
|
Dependencies::Dependency = Dependencies.additionalProperties
|
|
172
121
|
Enum::Item = Enum.items
|
|
173
122
|
Type::Array = Type.anyOf[1]
|
|
174
123
|
NonNegativeIntegerDefault0::Default0 = NonNegativeIntegerDefault0.allOf[1]
|
|
175
124
|
StringItem = StringArray.items
|
|
176
125
|
|
|
177
|
-
module Example
|
|
178
|
-
end
|
|
179
|
-
module
|
|
180
|
-
end
|
|
181
|
-
module
|
|
182
|
-
end
|
|
183
|
-
module
|
|
184
|
-
end
|
|
185
|
-
module Type::Array
|
|
186
|
-
end
|
|
187
|
-
module NonNegativeIntegerDefault0::Default0
|
|
188
|
-
end
|
|
189
|
-
module StringItem
|
|
190
|
-
end
|
|
126
|
+
module Example end
|
|
127
|
+
module PatternProperties::Pattern end
|
|
128
|
+
module Dependencies::Dependency end
|
|
129
|
+
module Enum::Item end
|
|
130
|
+
module Type::Array end
|
|
131
|
+
module NonNegativeIntegerDefault0::Default0 end
|
|
132
|
+
module StringItem end
|
|
191
133
|
end
|
|
192
134
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
135
|
+
module JSONSchemaDraft07::PropertyReaders
|
|
136
|
+
def ref(**kw) self['$ref', **kw] end
|
|
137
|
+
def comment(**kw) self['$comment', **kw] end
|
|
138
|
+
def format(**kw) self['format', **kw] end
|
|
197
139
|
end
|
|
140
|
+
JSONSchemaDraft07.include(JSONSchemaDraft07::PropertyReaders)
|
|
198
141
|
end
|
data/readme.rb
CHANGED
|
@@ -78,11 +78,11 @@ bad = Contact.new_jsi({'phone' => [{'number' => [5, 5, 5]}]})
|
|
|
78
78
|
print 'bad: '
|
|
79
79
|
pp bad
|
|
80
80
|
|
|
81
|
-
print 'bad.phone.jsi_validate: '
|
|
82
|
-
pp bad.phone.jsi_validate
|
|
81
|
+
print 'bad.phone[0].jsi_validate: '
|
|
82
|
+
pp bad.phone[0].jsi_validate
|
|
83
83
|
|
|
84
84
|
print 'bill.transform_values(&:size): '
|
|
85
|
-
pp bill.transform_values(&:size)
|
|
85
|
+
pp bill.transform_values(&:size) if Hash.method_defined?(:transform_values)
|
|
86
86
|
|
|
87
87
|
print "bill['nickname']: "
|
|
88
88
|
pp bill['nickname']
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://json-schema.org/draft/2020-12/strict",
|
|
4
|
+
"$vocabulary": {
|
|
5
|
+
"https://json-schema.org/draft/2020-12/vocab/core": true,
|
|
6
|
+
"https://json-schema.org/draft/2020-12/vocab/applicator": true,
|
|
7
|
+
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
|
|
8
|
+
"https://json-schema.org/draft/2020-12/vocab/validation": true,
|
|
9
|
+
"https://json-schema.org/draft/2020-12/vocab/meta-data": true,
|
|
10
|
+
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
|
|
11
|
+
"https://json-schema.org/draft/2020-12/vocab/content": true
|
|
12
|
+
},
|
|
13
|
+
"$dynamicAnchor": "meta",
|
|
14
|
+
|
|
15
|
+
"title": "Strict version of Core and Validation specifications meta-schema, disallowing all unknown keywords",
|
|
16
|
+
"$ref": "https://json-schema.org/draft/2020-12/schema",
|
|
17
|
+
|
|
18
|
+
"unevaluatedProperties": false
|
|
19
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://json-schema.org/draft/2020-12/meta/applicator",
|
|
4
|
+
"$vocabulary": {
|
|
5
|
+
"https://json-schema.org/draft/2020-12/vocab/applicator": true
|
|
6
|
+
},
|
|
7
|
+
"$dynamicAnchor": "meta",
|
|
8
|
+
|
|
9
|
+
"title": "Applicator vocabulary meta-schema",
|
|
10
|
+
"type": ["object", "boolean"],
|
|
11
|
+
"properties": {
|
|
12
|
+
"prefixItems": { "$ref": "#/$defs/schemaArray" },
|
|
13
|
+
"items": { "$dynamicRef": "#meta" },
|
|
14
|
+
"contains": { "$dynamicRef": "#meta" },
|
|
15
|
+
"additionalProperties": { "$dynamicRef": "#meta" },
|
|
16
|
+
"properties": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": { "$dynamicRef": "#meta" },
|
|
19
|
+
"default": {}
|
|
20
|
+
},
|
|
21
|
+
"patternProperties": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"additionalProperties": { "$dynamicRef": "#meta" },
|
|
24
|
+
"propertyNames": { "format": "regex" },
|
|
25
|
+
"default": {}
|
|
26
|
+
},
|
|
27
|
+
"dependentSchemas": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": { "$dynamicRef": "#meta" },
|
|
30
|
+
"default": {}
|
|
31
|
+
},
|
|
32
|
+
"propertyNames": { "$dynamicRef": "#meta" },
|
|
33
|
+
"if": { "$dynamicRef": "#meta" },
|
|
34
|
+
"then": { "$dynamicRef": "#meta" },
|
|
35
|
+
"else": { "$dynamicRef": "#meta" },
|
|
36
|
+
"allOf": { "$ref": "#/$defs/schemaArray" },
|
|
37
|
+
"anyOf": { "$ref": "#/$defs/schemaArray" },
|
|
38
|
+
"oneOf": { "$ref": "#/$defs/schemaArray" },
|
|
39
|
+
"not": { "$dynamicRef": "#meta" }
|
|
40
|
+
},
|
|
41
|
+
"$defs": {
|
|
42
|
+
"schemaArray": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"minItems": 1,
|
|
45
|
+
"items": { "$dynamicRef": "#meta" }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://json-schema.org/draft/2020-12/meta/content",
|
|
4
|
+
"$vocabulary": {
|
|
5
|
+
"https://json-schema.org/draft/2020-12/vocab/content": true
|
|
6
|
+
},
|
|
7
|
+
"$dynamicAnchor": "meta",
|
|
8
|
+
|
|
9
|
+
"title": "Content vocabulary meta-schema",
|
|
10
|
+
|
|
11
|
+
"type": ["object", "boolean"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"contentEncoding": { "type": "string" },
|
|
14
|
+
"contentMediaType": { "type": "string" },
|
|
15
|
+
"contentSchema": { "$dynamicRef": "#meta" }
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://json-schema.org/draft/2020-12/meta/core",
|
|
4
|
+
"$vocabulary": {
|
|
5
|
+
"https://json-schema.org/draft/2020-12/vocab/core": true
|
|
6
|
+
},
|
|
7
|
+
"$dynamicAnchor": "meta",
|
|
8
|
+
|
|
9
|
+
"title": "Core vocabulary meta-schema",
|
|
10
|
+
"type": ["object", "boolean"],
|
|
11
|
+
"properties": {
|
|
12
|
+
"$id": {
|
|
13
|
+
"$ref": "#/$defs/uriReferenceString",
|
|
14
|
+
"$comment": "Non-empty fragments not allowed.",
|
|
15
|
+
"pattern": "^[^#]*#?$"
|
|
16
|
+
},
|
|
17
|
+
"$schema": { "$ref": "#/$defs/uriString" },
|
|
18
|
+
"$ref": { "$ref": "#/$defs/uriReferenceString" },
|
|
19
|
+
"$anchor": { "$ref": "#/$defs/anchorString" },
|
|
20
|
+
"$dynamicRef": { "$ref": "#/$defs/uriReferenceString" },
|
|
21
|
+
"$dynamicAnchor": { "$ref": "#/$defs/anchorString" },
|
|
22
|
+
"$vocabulary": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"propertyNames": { "$ref": "#/$defs/uriString" },
|
|
25
|
+
"additionalProperties": {
|
|
26
|
+
"type": "boolean"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"$comment": {
|
|
30
|
+
"type": "string"
|
|
31
|
+
},
|
|
32
|
+
"$defs": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"additionalProperties": { "$dynamicRef": "#meta" }
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"$defs": {
|
|
38
|
+
"anchorString": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"pattern": "^[A-Za-z_][-A-Za-z0-9._]*$"
|
|
41
|
+
},
|
|
42
|
+
"uriString": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"format": "uri"
|
|
45
|
+
},
|
|
46
|
+
"uriReferenceString": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"format": "uri-reference"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://json-schema.org/draft/2020-12/meta/format-annotation",
|
|
4
|
+
"$vocabulary": {
|
|
5
|
+
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true
|
|
6
|
+
},
|
|
7
|
+
"$dynamicAnchor": "meta",
|
|
8
|
+
|
|
9
|
+
"title": "Format vocabulary meta-schema for annotation results",
|
|
10
|
+
"type": ["object", "boolean"],
|
|
11
|
+
"properties": {
|
|
12
|
+
"format": { "type": "string" }
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://json-schema.org/draft/2020-12/meta/format-assertion",
|
|
4
|
+
"$vocabulary": {
|
|
5
|
+
"https://json-schema.org/draft/2020-12/vocab/format-assertion": true
|
|
6
|
+
},
|
|
7
|
+
"$dynamicAnchor": "meta",
|
|
8
|
+
|
|
9
|
+
"title": "Format vocabulary meta-schema for assertion results",
|
|
10
|
+
"type": ["object", "boolean"],
|
|
11
|
+
"properties": {
|
|
12
|
+
"format": { "type": "string" }
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://json-schema.org/draft/2020-12/meta/meta-data",
|
|
4
|
+
"$vocabulary": {
|
|
5
|
+
"https://json-schema.org/draft/2020-12/vocab/meta-data": true
|
|
6
|
+
},
|
|
7
|
+
"$dynamicAnchor": "meta",
|
|
8
|
+
|
|
9
|
+
"title": "Meta-data vocabulary meta-schema",
|
|
10
|
+
|
|
11
|
+
"type": ["object", "boolean"],
|
|
12
|
+
"properties": {
|
|
13
|
+
"title": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"description": {
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
"default": true,
|
|
20
|
+
"deprecated": {
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"default": false
|
|
23
|
+
},
|
|
24
|
+
"readOnly": {
|
|
25
|
+
"type": "boolean",
|
|
26
|
+
"default": false
|
|
27
|
+
},
|
|
28
|
+
"writeOnly": {
|
|
29
|
+
"type": "boolean",
|
|
30
|
+
"default": false
|
|
31
|
+
},
|
|
32
|
+
"examples": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": true
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://json-schema.org/draft/2020-12/meta/unevaluated",
|
|
4
|
+
"$vocabulary": {
|
|
5
|
+
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true
|
|
6
|
+
},
|
|
7
|
+
"$dynamicAnchor": "meta",
|
|
8
|
+
|
|
9
|
+
"title": "Unevaluated applicator vocabulary meta-schema",
|
|
10
|
+
"type": ["object", "boolean"],
|
|
11
|
+
"properties": {
|
|
12
|
+
"unevaluatedItems": { "$dynamicRef": "#meta" },
|
|
13
|
+
"unevaluatedProperties": { "$dynamicRef": "#meta" }
|
|
14
|
+
}
|
|
15
|
+
}
|