class Synapse::Upcasting::UpcasterChain
Attributes
converter_factory[R]
@return [ConverterFactory]
upcasters[R]
@return [Array<Upcaster>]
Public Class Methods
new(converter_factory)
click to toggle source
@param [ConverterFactory] converter_factory
@return [undefined]
# File lib/synapse/upcasting/upcaster_chain.rb, line 12 def initialize(converter_factory) @converter_factory = converter_factory @upcasters = Array.new end
Public Instance Methods
push(upcaster)
click to toggle source
Pushes the given upcaster onto the end of this upcaster chain
@param [Upcaster] upcaster @return [undefined]
# File lib/synapse/upcasting/upcaster_chain.rb, line 21 def push(upcaster) @upcasters.push upcaster end
Also aliased as: <<
upcast(serialized_object, upcast_context)
click to toggle source
@param [SerializedObject] serialized_object @param [UpcastingContext] upcast_context @return [Array<SerializedObject>]
# File lib/synapse/upcasting/upcaster_chain.rb, line 30 def upcast(serialized_object, upcast_context) serialized_objects = Array.new serialized_objects.push serialized_object @upcasters.each do |upcaster| serialized_objects = upcast_objects upcaster, serialized_objects, upcast_context end serialized_objects end
Protected Instance Methods
perform_upcast(upcaster, representation, expected_types, upcast_context)
click to toggle source
@param [Upcaster] upcaster @param [SerializedObject] representation @param [Array<SerializedType>] expected_types @param [UpcastingContent] upcast_context @return [Array<SerializedObject>]
# File lib/synapse/upcasting/upcaster_chain.rb, line 48 def perform_upcast(upcaster, representation, expected_types, upcast_context) upcaster.upcast representation, expected_types, upcast_context end
Private Instance Methods
upcast_objects(upcaster, serialized_objects, upcast_context)
click to toggle source
@param [Upcaster] upcaster @param [Array<SerializedObject>] serialized_objects @param [UpcastingContext] upcast_context @return [Array<SerializedObject>]
# File lib/synapse/upcasting/upcaster_chain.rb, line 58 def upcast_objects(upcaster, serialized_objects, upcast_context) upcast_objects = Array.new serialized_objects.each do |serialized_object| serialized_type = serialized_object.type if upcaster.can_upcast? serialized_type serialized_object = converter_factory.convert serialized_object, upcaster.expected_content_type expected_types = upcaster.upcast_type serialized_type upcast_objects.concat(perform_upcast(upcaster, serialized_object, expected_types, upcast_context)) else upcast_objects.push serialized_object end end upcast_objects end