def schema_to_h(schema)
hash = {}
return hash if schema.nil?
if schema.ref?
hash['$ref'] = definition_reference(schema.ref)
dependencies.merge(dependencies_for(schema))
dependencies.add(schema.ref)
end
hash[:description] = schema.description if schema.description?
hash[:default] = schema.default if schema.default?
hash[:maximum] = schema.maximum if schema.maximum?
hash[:exclusive_maximum] = !!schema.exclusive_maximum if schema.exclusive_maximum?
hash[:minimum] = schema.minimum if schema.minimum?
hash[:exclusive_minimum] = !!schema.exclusive_minimum if schema.exclusive_minimum?
hash[:max_length] = schema.max_length if schema.max_length?
hash[:min_length] = schema.min_length if schema.min_length?
hash[:pattern] = schema.pattern if schema.pattern?
hash[:max_items] = schema.max_items if schema.max_items?
hash[:min_items] = schema.min_items if schema.min_items?
hash[:unique_items] = !!schema.unique_items if schema.unique_items?
hash[:enum] = schema.enum.map(&:to_s) unless schema.enum.empty?
hash[:multiple_of] = schema.multiple_of if schema.multiple_of?
hash[:type] = schema.type if schema.type
if schema.properties?
hash[:properties] = {}
schema.properties.each do |name, prop|
hash[:properties][name] = schema_to_h(prop)
end
end
if schema.items?
hash[:items] = schema_to_h(schema.items)
end
hash
end