Sha256: 9b82667185e7b918959fe1be7d0f8621674070e627ce1be59e821473023fe2dc
Contents?: true
Size: 1.54 KB
Versions: 1
Compression:
Stored size: 1.54 KB
Contents
# frozen_string_literal: true require_relative 'serialization/mixin' require_relative 'serialization/deserializer_attribute_set' require_relative 'serialization/deserializer_attribute' module LedgerSync class Deserializer include Serialization::Mixin def attribute_value_from_ledger(hash:, ledger_serializer_attribute:, resource:) ledger_serializer_attribute.value_from_hash( hash: hash, resource: resource ) end def deserialize(args = {}) hash = args.fetch(:hash) resource = args.fetch(:resource) deserialize_into = resource.dup # Do not overwrite values in the resource hash = Util::HashHelpers.deep_stringify_keys(hash) self.class.attributes.each_value do |ledger_serializer_attribute| value = attribute_value_from_ledger( hash: hash, ledger_serializer_attribute: ledger_serializer_attribute, resource: deserialize_into ) deserialize_into.assign_attribute( ledger_serializer_attribute.resource_attribute_dot_parts.first, value ) end deserialize_into end def self.attribute(resource_attribute, args = {}, &block) _attribute( args.merge( block: (block if block_given?), resource_attribute: resource_attribute ) ) end def self.attribute_class Serialization::DeserializerAttribute end def self.attributes @attributes ||= Serialization::DeserializerAttributeSet.new(serializer_class: self) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ledger_sync-1.3.5 | lib/ledger_sync/deserializer.rb |