lib/swagger/reference.rb
class Swagger::Reference
include Swagger::Mixins::Description
attr_accessor :name, :fields
def initialize(name, fields, specification)
@name = name
@fields = fields.dup
@specification = specification
fail "This isn't a reference: #{fields.inspect}" unless fields['$ref']
end
def normalized_ref_string
fields['$ref'].gsub(/^#/, '')
end
def property_json_line
" \"#{name}\": #{sample_value}".html_safe
end
def dereferenced?
@_dereferenced != nil
end
def object_name
normalized_ref_string.gsub(%r{^.+/}, '')
end
def name
@name || object_name
end
def displayed_type
"<a href=\"#definition-#{object_name}\">#{object_name}</a>".html_safe
end
def comment
nil
end
def nullable
false
end
def sample_value
"<< #{displayed_type} >>".html_safe
end
def dereferenced
unless dereferenced?
pointer = Hana::Pointer.new(normalized_ref_string)
target = pointer.eval(@specification.json)
fail "Unable to dereference #{normalized_ref_string}" if target.nil?
@_dereferenced = Swagger::Schema.factory(@name, target, @specification)
end
@_dereferenced
end
delegate :description,
:properties,
:summary,
:title,
to: :dereferenced
end