class EvilEvents::Core::Events::Serializers::Hash::Engines::Native

@api private @since 0.4.0

Public Instance Methods

dump(serialization_state) click to toggle source

@param serialization_state [Base::EventSerializationState] @return [::Hash]

@since 0.4.0 @api private

# File lib/evil_events/core/events/serializers/hash/engines/native.rb, line 12
def dump(serialization_state)
  {
    id:       serialization_state.id,
    type:     serialization_state.type,
    payload:  serialization_state.payload,
    metadata: serialization_state.metadata
  }
end
load(hash) click to toggle source

@param hash [::Hash] @raise [EvilEvents::SerializationEngineError] @return [EventSerializationState]

@since 0.4.0 @api private

# File lib/evil_events/core/events/serializers/hash/engines/native.rb, line 27
def load(hash)
  begin
    event_id       = hash[:id]       || hash['id']
    event_type     = hash[:type]     || hash['type']
    event_payload  = hash[:payload]  || hash['payload']
    event_metadata = hash[:metadata] || hash['metadata']
  rescue NoMethodError, TypeError, ArgumentError
    raise EvilEvents::SerializationEngineError
  end

  restore_serialization_state(
    id:       event_id,
    type:     event_type,
    payload:  (symbolized_hash(event_payload)  if event_payload),
    metadata: (symbolized_hash(event_metadata) if event_metadata)
  )
end

Private Instance Methods

symbolized_hash(hash) click to toggle source

@param hash [::Hash] @return [::Hash]

@since 0.1.0

# File lib/evil_events/core/events/serializers/hash/engines/native.rb, line 51
def symbolized_hash(hash)
  hash.each_pair.each_with_object({}) do |(key, value), result_hash|
    result_hash[key.to_sym] = value
  end
end