class SoberSwag::Reporting::Output::Object
Serialize out a JSON object.
Attributes
properties[R]
@param properties [Hash<Symbol,Property>]
Public Class Methods
new(properties)
click to toggle source
@param properties [Hash<Symbol,Property>] the properties to serialize
# File lib/sober_swag/reporting/output/object.rb, line 11 def initialize(properties) @properties = properties end
Public Instance Methods
call(item)
click to toggle source
# File lib/sober_swag/reporting/output/object.rb, line 19 def call(item) properties.each.with_object({}) do |(k, v), hash| hash[k] = v.output.call(item) end end
serialize_report(item)
click to toggle source
# File lib/sober_swag/reporting/output/object.rb, line 25 def serialize_report(item) bad, good = properties.map { |k, prop| [k, prop.output.serialize_report(item)] }.partition { |(_, v)| v.is_a?(Report::Base) } return Report::Object.new(bad.to_h) if bad.any? good.to_h end
swagger_schema()
click to toggle source
# File lib/sober_swag/reporting/output/object.rb, line 35 def swagger_schema # rubocop:disable Metrics/MethodLength props, found = properties.each.with_object([{}, {}]) do |(k, v), (field, f)| prop_type, prop_found = v.property_schema field[k] = prop_type f.merge!(prop_found) end [ { type: 'object', properties: props, required: properties.keys }, found ] end