module ParamsReady::Marshaller::HashMarshallers::HashMarshaller
Public Class Methods
canonicalize(definition, hash, context, validator, freeze: false)
click to toggle source
# File lib/params_ready/marshaller/hash_marshallers.rb, line 45 def self.canonicalize(definition, hash, context, validator, freeze: false) hash = if definition.respond_to?(:remap?) && definition.remap?(context) definition.key_map.to_standard(hash) else hash end value = definition.names.each_with_object({}) do |(name, child_def), result| child = child_def.create child.set_from_hash(hash, validator: validator&.for_child(name), context: context) child.freeze if freeze result[name] = child end [value, validator] end
marshal(parameter, intent)
click to toggle source
# File lib/params_ready/marshaller/hash_marshallers.rb, line 61 def self.marshal(parameter, intent) value = extract_bare_value(parameter, intent) definition = parameter.definition if value == {} if intent.marshal?(definition.name_for_formatter) if definition.optional? || definition.default_defined? parameter.class::EMPTY_HASH elsif intent.omit?(parameter) nil else value end else value end elsif definition.respond_to?(:remap?) && definition.remap?(intent) definition.key_map.to_alternative(value) else value end end