class Swagger::Schema
Represents a Swagger
Schema
Object, a more deterministic subset of JSON Schema
. @see github.com/wordnik/swagger-spec/blob/master/versions/2.0.md#schema-object- Schema
Object @see json-schema.org/ JSON Schema
Attributes
parent[RW]
Public Class Methods
new(hash, default = nil)
click to toggle source
Calls superclass method
# File lib/swagger/schema.rb, line 11 def initialize(hash, default = nil) super attach_to_children end
Public Instance Methods
parse()
click to toggle source
# File lib/swagger/schema.rb, line 16 def parse schema = clone if schema.key?('$ref') key = schema.delete('$ref').split('/').last model = root.definitions[key].parse schema.merge!(model) end count = 0 until schema.refs_resolved? #puts count fail 'Could not resolve non-remote $refs 5 cycles - circular references?' if count >= 5 schema.resolve_refs count += 1 end schema.to_hash end
Protected Instance Methods
refs()
click to toggle source
# File lib/swagger/schema.rb, line 37 def refs deep_find_all('$ref') end
refs_resolved?()
click to toggle source
# File lib/swagger/schema.rb, line 52 def refs_resolved? return true if refs.nil? refs.all? do |ref| remote_ref?(ref) end end
remote_ref?(ref)
click to toggle source
# File lib/swagger/schema.rb, line 60 def remote_ref?(ref) ref.match(%r{\A\w+\://}) end
resolve_refs()
click to toggle source
# File lib/swagger/schema.rb, line 41 def resolve_refs children.each do |child| child.resolve_refs if child.is_a?(Swagger::Schema) end key = self.delete('$ref') return if key.nil? || remote_ref?(key) key = key.split('/').last model = root.definitions[key].parse self.merge!(model) end