class SoberSwag::Reporting::Input::MergeObjects
Merge two object types together, in an allof stype relationship
Attributes
child[R]
@return [Interface] child type
parent[R]
@return [Interface] parent type
Public Class Methods
new(parent, child)
click to toggle source
# File lib/sober_swag/reporting/input/merge_objects.rb, line 7 def initialize(parent, child) @parent = parent @child = child end
Public Instance Methods
call(value)
click to toggle source
# File lib/sober_swag/reporting/input/merge_objects.rb, line 20 def call(value) parent_attrs = parent.call(value) return parent_attrs if parent_attrs.is_a?(Report::Value) # otherwise, object type, so we want to get a full error report child_attrs = child.call(value) return child_attrs if child_attrs.is_a?(Report::Value) merge_results(parent_attrs, child_attrs) end
swagger_path_schema()
click to toggle source
# File lib/sober_swag/reporting/input/merge_objects.rb, line 46 def swagger_path_schema parent.swagger_path_schema + child.swagger_path_schema end
swagger_query_schema()
click to toggle source
# File lib/sober_swag/reporting/input/merge_objects.rb, line 50 def swagger_query_schema parent.swagger_query_schema + child.swagger_query_schema end
swagger_schema()
click to toggle source
# File lib/sober_swag/reporting/input/merge_objects.rb, line 34 def swagger_schema parent_schema, parent_found = parent.swagger_schema child_schema, child_found = child.swagger_schema [ { allOf: (parent_schema[:allOf] || [parent_schema]) + (child_schema[:allOf] || [child_schema]) }, parent_found.merge(child_found) ] end
Private Instance Methods
merge_results(par, chi)
click to toggle source
# File lib/sober_swag/reporting/input/merge_objects.rb, line 56 def merge_results(par, chi) # rubocop:disable Metrics/MethodLength if par.is_a?(Report::Base) if chi.is_a?(Report::Base) Report::MergedObject.new(par, chi) else par end elsif chi.is_a?(Report::Base) chi else par.to_h.merge(chi.to_h) end end