class JSchema::Schema
Constants
- VERSION_ID
Attributes
parent[R]
uri[R]
Public Class Methods
build(sch = {}, parent = nil, id = nil)
click to toggle source
# File lib/jschema/schema.rb, line 6 def build(sch = {}, parent = nil, id = nil) schema = sch || {} check_schema_version schema if (json_reference = schema['$ref']) unescaped_ref = json_reference.gsub(/~1|~0/, '~1' => '/', '~0' => '~') SchemaRef.new(URI(unescaped_ref), parent) else uri = SchemaURI.build(schema['id'], parent, id) parent && JSONReference.dereference(uri, parent) || begin jschema = new(schema, uri, parent) register_definitions schema, jschema JSONReference.register_schema jschema end end end
new(schema, uri, parent)
click to toggle source
# File lib/jschema/schema.rb, line 45 def initialize(schema, uri, parent) @uri = uri @parent = parent @schema = schema @validators = Validator.build(schema, self) end
Private Class Methods
check_schema_version(schema)
click to toggle source
# File lib/jschema/schema.rb, line 26 def check_schema_version(schema) version = schema['$schema'] if version && version != VERSION_ID fail InvalidSchema, 'Specified schema version is not supported' end end
register_definitions(schema, parent)
click to toggle source
# File lib/jschema/schema.rb, line 33 def register_definitions(schema, parent) if (definitions = schema['definitions']) definitions.each do |definition, sch| schema_def = build(sch, parent, "definitions/#{definition}") JSONReference.register_schema schema_def end end end
Public Instance Methods
fragment(path)
click to toggle source
# File lib/jschema/schema.rb, line 62 def fragment(path) JSchema::JSONReference.dereference(URI.parse(path), self) end
to_s()
click to toggle source
# File lib/jschema/schema.rb, line 66 def to_s uri.to_s end
valid?(instance)
click to toggle source
# File lib/jschema/schema.rb, line 52 def valid?(instance) validate(instance).empty? end
validate(instance)
click to toggle source
# File lib/jschema/schema.rb, line 56 def validate(instance) @validators.map do |validator| validator.validate(instance) end.compact end