Method: Decanter::Core::ClassMethods#handled_keys

Defined in:
lib/decanter/core.rb

#handled_keys(args) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/decanter/core.rb', line 120

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