Class: Dry::Types::Hash::Symbolized

Inherits:
Schema show all
Defined in:
lib/dry/types/hash/schema.rb

Instance Attribute Summary

Attributes inherited from Schema

#member_types

Attributes inherited from Definition

#options, #primitive

Attributes included from Options

#meta, #options

Instance Method Summary collapse

Methods inherited from Schema

#initialize, #try

Methods inherited from Dry::Types::Hash

#schema, #strict, #symbolized

Methods inherited from Definition

[], #failure, #initialize, #name, #primitive?, #result, #success, #try

Methods included from Builder

#constrained, #constrained_type, #constructor, #default, #enum, #maybe, #optional, #safe, #|

Methods included from Options

#initialize, #with

Constructor Details

This class inherits a constructor from Dry::Types::Hash::Schema

Instance Method Details

#call(hash, meth = :call) ⇒ Object Also known as: []



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/dry/types/hash/schema.rb', line 48

def call(hash, meth = :call)
  member_types.each_with_object({}) do |(key, type), result|
    if hash.key?(key)
      result[key] = type.__send__(meth, hash[key])
    else
      key_name = key.to_s

      if hash.key?(key_name)
        result[key] = type.__send__(meth, hash[key_name])
      else
        resolve_missing_value(result, key, type)
      end
    end
  end
end