class Jsonschema::Generator::Draft07
Draft 07
Attributes
options[R]
parsed_json[R]
raw_json[R]
Public Class Methods
new(raw_json, options = {})
click to toggle source
# File lib/jsonschema/generator/draft07.rb, line 9 def initialize(raw_json, options = {}) @raw_json = raw_json @options = options @parsed_json = parse(raw_json) end
Public Instance Methods
call()
click to toggle source
# File lib/jsonschema/generator/draft07.rb, line 15 def call raise Error, 'Invalid Input. JSON expected' unless parsed_json { 'title' => ROOT_TITLE }.merge(generate(parsed_json)) end
Private Instance Methods
generate(input)
click to toggle source
# File lib/jsonschema/generator/draft07.rb, line 31 def generate(input) case input when Hash generate_object(input) when Array generate_array(input) else Hash['type', TypeDeterminant.call(input)] end end
generate_array(array)
click to toggle source
# File lib/jsonschema/generator/draft07.rb, line 54 def generate_array(array) params = { 'type' => 'array', 'minItems' => array.size, 'maxItems' => array.size, 'items' => {}, } array.each_with_object(params) do |elem, memo| memo['items'].merge!(generate(elem)) end end
generate_object(hash)
click to toggle source
# File lib/jsonschema/generator/draft07.rb, line 42 def generate_object(hash) params = { 'type' => 'object', 'required' => hash.keys, 'properties' => {}, } hash.each_with_object(params) do |(key, value), memo| memo['properties'].merge!(Hash[key, generate(value)]) end end
parse(json)
click to toggle source
# File lib/jsonschema/generator/draft07.rb, line 25 def parse(json) JSON.parse(json) rescue StandardError nil end