module Philotic::Serialization::Serializer
Public Instance Methods
dump(payload, metadata)
click to toggle source
# File lib/philotic/serialization/serializer.rb, line 26 def dump(payload, metadata) _transform(:dump, payload, metadata) end
factory(serialization)
click to toggle source
# File lib/philotic/serialization/serializer.rb, line 12 def factory(serialization) serialization = serialization.to_s.downcase.to_sym serializers[serialization] end
load(payload, metadata)
click to toggle source
return the fully deserialized payload
# File lib/philotic/serialization/serializer.rb, line 22 def load(payload, metadata) _transform(:load, payload, metadata) end
register(serializer)
click to toggle source
# File lib/philotic/serialization/serializer.rb, line 17 def register(serializer) serializers[serializer.serialization] = serializer end
serializers()
click to toggle source
# File lib/philotic/serialization/serializer.rb, line 8 def serializers @serializers ||= {} end
Private Instance Methods
_transform(dump_or_load, payload, metadata)
click to toggle source
# File lib/philotic/serialization/serializer.rb, line 31 def _transform(dump_or_load, payload, metadata) headers = Marshal.load(Marshal.dump(metadata[:headers])).deep_symbolize_keys serializations = headers[:philotic_serializations] serializations.reverse! if(dump_or_load == :load) serializations.reduce(payload.dup) do |transformed, serialization| serializer = factory serialization (serializer && serializer.public_send(dump_or_load, transformed, metadata)) || transformed end end