Method: Decanter::Core::ClassMethods#handled_keys

Defined in:
lib/decanter/core.rb

#handled_keys(args) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/decanter/core.rb', line 83

def handled_keys(args)
  arg_keys = args.keys.map(&:to_sym)
  inputs, assocs = handlers.values.partition { |handler| handler[:type] == :input }

  {}.merge(
    # Inputs
    inputs.select     { |handler| (arg_keys & handler[:name]).any? }
          .reduce({}) { |memo, handler| memo.merge handle_input(handler, args) }
  ).merge(
    # Associations
    assocs.reduce({}) { |memo, handler| memo.merge handle_association(handler, args) }
  )
end