Class: JSON::Schema
- Inherits:
-
Object
- Object
- JSON::Schema
- Defined in:
- lib/json-schema/schema.rb,
lib/json-schema/attribute.rb,
lib/json-schema/schema/reader.rb,
lib/json-schema/attributes/not.rb,
lib/json-schema/attributes/ref.rb,
lib/json-schema/attributes/enum.rb,
lib/json-schema/attributes/type.rb,
lib/json-schema/attributes/allof.rb,
lib/json-schema/attributes/anyof.rb,
lib/json-schema/attributes/const.rb,
lib/json-schema/attributes/items.rb,
lib/json-schema/attributes/limit.rb,
lib/json-schema/attributes/oneof.rb,
lib/json-schema/errors/uri_error.rb,
lib/json-schema/schema/validator.rb,
lib/json-schema/attributes/format.rb,
lib/json-schema/validators/draft1.rb,
lib/json-schema/validators/draft2.rb,
lib/json-schema/validators/draft3.rb,
lib/json-schema/validators/draft4.rb,
lib/json-schema/validators/draft6.rb,
lib/json-schema/attributes/extends.rb,
lib/json-schema/attributes/pattern.rb,
lib/json-schema/attributes/type_v4.rb,
lib/json-schema/attributes/disallow.rb,
lib/json-schema/attributes/required.rb,
lib/json-schema/errors/schema_error.rb,
lib/json-schema/attributes/formats/ip.rb,
lib/json-schema/attributes/maxdecimal.rb,
lib/json-schema/attributes/multipleof.rb,
lib/json-schema/attributes/properties.rb,
lib/json-schema/attributes/divisibleby.rb,
lib/json-schema/attributes/formats/uri.rb,
lib/json-schema/attributes/uniqueitems.rb,
lib/json-schema/errors/json_load_error.rb,
lib/json-schema/attributes/dependencies.rb,
lib/json-schema/attributes/formats/date.rb,
lib/json-schema/attributes/formats/time.rb,
lib/json-schema/attributes/limits/items.rb,
lib/json-schema/errors/json_parse_error.rb,
lib/json-schema/errors/validation_error.rb,
lib/json-schema/validators/hyper-draft1.rb,
lib/json-schema/validators/hyper-draft2.rb,
lib/json-schema/validators/hyper-draft3.rb,
lib/json-schema/validators/hyper-draft4.rb,
lib/json-schema/validators/hyper-draft6.rb,
lib/json-schema/attributes/limits/length.rb,
lib/json-schema/attributes/properties_v4.rb,
lib/json-schema/attributes/propertynames.rb,
lib/json-schema/attributes/formats/custom.rb,
lib/json-schema/attributes/limits/maximum.rb,
lib/json-schema/attributes/limits/minimum.rb,
lib/json-schema/attributes/limits/numeric.rb,
lib/json-schema/errors/schema_parse_error.rb,
lib/json-schema/attributes/additionalitems.rb,
lib/json-schema/attributes/dependencies_v4.rb,
lib/json-schema/errors/custom_format_error.rb,
lib/json-schema/attributes/limits/max_items.rb,
lib/json-schema/attributes/limits/min_items.rb,
lib/json-schema/attributes/formats/date_time.rb,
lib/json-schema/attributes/limits/max_length.rb,
lib/json-schema/attributes/limits/min_length.rb,
lib/json-schema/attributes/limits/properties.rb,
lib/json-schema/attributes/patternproperties.rb,
lib/json-schema/attributes/properties_optional.rb,
lib/json-schema/attributes/additionalproperties.rb,
lib/json-schema/attributes/formats/date_time_v4.rb,
lib/json-schema/attributes/limits/max_properties.rb,
lib/json-schema/attributes/limits/min_properties.rb,
lib/json-schema/attributes/limits/maximum_inclusive.rb,
lib/json-schema/attributes/limits/minimum_inclusive.rb
Defined Under Namespace
Classes: AdditionalItemsAttribute, AdditionalPropertiesAttribute, AllOfAttribute, AnyOfAttribute, Attribute, ConstAttribute, CustomFormat, CustomFormatError, DateFormat, DateTimeFormat, DateTimeV4Format, DependenciesAttribute, DependenciesV4Attribute, DisallowAttribute, DivisibleByAttribute, Draft1, Draft2, Draft3, Draft4, Draft6, EnumAttribute, ExtendsAttribute, FormatAttribute, HyperDraft1, HyperDraft2, HyperDraft3, HyperDraft4, HyperDraft6, IP4Format, IP6Format, IPFormat, ItemsAttribute, ItemsLimitAttribute, JsonLoadError, JsonParseError, LengthLimitAttribute, LimitAttribute, MaxDecimalAttribute, MaxItemsAttribute, MaxLengthAttribute, MaxPropertiesAttribute, MaximumAttribute, MaximumInclusiveAttribute, MinItemsAttribute, MinLengthAttribute, MinPropertiesAttribute, MinimumAttribute, MinimumInclusiveAttribute, MultipleOfAttribute, NotAttribute, NumericLimitAttribute, OneOfAttribute, PatternAttribute, PatternPropertiesAttribute, PropertiesAttribute, PropertiesLimitAttribute, PropertiesOptionalAttribute, PropertiesV4Attribute, PropertyNames, ReadError, ReadFailed, ReadRefused, Reader, RefAttribute, RequiredAttribute, SchemaError, SchemaParseError, TimeFormat, TypeAttribute, TypeV4Attribute, UniqueItemsAttribute, UriError, UriFormat, ValidationError, Validator
Instance Attribute Summary collapse
-
#schema ⇒ Object
Returns the value of attribute schema.
-
#uri ⇒ Object
Returns the value of attribute uri.
-
#validator ⇒ Object
Returns the value of attribute validator.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(schema, uri, parent_validator = nil) ⇒ Schema
constructor
A new instance of Schema.
-
#to_array_schema ⇒ JSON::Schema
A new schema matching an array whose items all match this schema.
- #to_s ⇒ Object
- #validate(data, fragments, processor, options = {}) ⇒ Object
Constructor Details
#initialize(schema, uri, parent_validator = nil) ⇒ Schema
Returns a new instance of Schema.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/json-schema/schema.rb', line 7 def initialize(schema, uri, parent_validator = nil) @schema = schema @uri = uri # If there is an ID on this schema, use it to generate the URI if @schema['id'].is_a?(String) temp_uri = JSON::Util::URI.parse(@schema['id']) if temp_uri.relative? temp_uri = uri.join(temp_uri) end @uri = temp_uri end @uri = JSON::Util::URI.strip_fragment(@uri) # If there is a $schema on this schema, use it to determine which validator to use if @schema['$schema'] @validator = JSON::Validator.validator_for_uri(@schema['$schema']) elsif parent_validator @validator = parent_validator else @validator = JSON::Validator.default_validator end end |
Instance Attribute Details
#schema ⇒ Object
Returns the value of attribute schema.
5 6 7 |
# File 'lib/json-schema/schema.rb', line 5 def schema @schema end |
#uri ⇒ Object
Returns the value of attribute uri.
5 6 7 |
# File 'lib/json-schema/schema.rb', line 5 def uri @uri end |
#validator ⇒ Object
Returns the value of attribute validator.
5 6 7 |
# File 'lib/json-schema/schema.rb', line 5 def validator @validator end |
Class Method Details
.stringify(schema) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/json-schema/schema.rb', line 35 def self.stringify(schema) case schema when Hash then schema.map { |key, _value| [key.to_s, stringify(schema[key])] }.to_h when Array then schema.map do |schema_item| stringify(schema_item) end when Symbol then schema.to_s else schema end end |
Instance Method Details
#to_array_schema ⇒ JSON::Schema
Returns a new schema matching an array whose items all match this schema.
51 52 53 54 55 |
# File 'lib/json-schema/schema.rb', line 51 def to_array_schema array_schema = { 'type' => 'array', 'items' => schema } array_schema['$schema'] = schema['$schema'] unless schema['$schema'].nil? self.class.new(array_schema, uri, validator) end |
#to_s ⇒ Object
57 58 59 |
# File 'lib/json-schema/schema.rb', line 57 def to_s @schema.to_json end |
#validate(data, fragments, processor, options = {}) ⇒ Object
31 32 33 |
# File 'lib/json-schema/schema.rb', line 31 def validate(data, fragments, processor, = {}) @validator.validate(self, data, fragments, processor, ) end |