class ApiSchema::SerializerDefinition
Constants
- PriorReference
Attributes
api_version[R]
description[RW]
fields[R]
id[R]
name[RW]
parent[R]
prior_references[RW]
references[R]
type[RW]
Public Class Methods
new(id, type, api_version, name=nil, parent_id = nil)
click to toggle source
# File lib/api_schema/serializer_definition.rb, line 10 def initialize(id, type, api_version, name=nil, parent_id = nil) @id = id @type = type @name = name || id @api_version = api_version @parent = api_version.serializers.detect { |s| s.id == parent_id } if parent_id @fields = parent&.fields || [] @prior_references = parent&.prior_references || [] @references = [] end
Public Instance Methods
build()
click to toggle source
# File lib/api_schema/serializer_definition.rb, line 29 def build build_references sd = self swagger_schema(id) { schema_for(sd) } end
build_references()
click to toggle source
# File lib/api_schema/serializer_definition.rb, line 35 def build_references @prior_references.each do |pr| reference = api_version.serializers.detect { |s| s.id == pr.id } reference.type = pr.type reference.description = pr.desc reference.name = reference.name.to_s.pluralize if reference.type == :array @references << reference end end
method_missing(type, *args, &block)
click to toggle source
# File lib/api_schema/serializer_definition.rb, line 45 def method_missing(type, *args, &block) options = args[1] || {} @fields << Field.new(type, args[0], options) end
reference(refernce_id, type: :object, desc: nil)
click to toggle source
# File lib/api_schema/serializer_definition.rb, line 25 def reference(refernce_id, type: :object, desc: nil) @prior_references << PriorReference.new(refernce_id, type, desc) end
required_fields()
click to toggle source
# File lib/api_schema/serializer_definition.rb, line 21 def required_fields fields.select { |f| f.required? }.map(&:name) + references.map(&:name) end