Module: PluckToHash::ClassMethods

Defined in:
lib/pluck_to_hash.rb

Instance Method Summary collapse

Instance Method Details

#pluck_to_hash(*keys) ⇒ Object Also known as: pluck_h



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/pluck_to_hash.rb', line 7

def pluck_to_hash(*keys)
  block_given = block_given?
  hash_type = keys[-1].is_a?(Hash) ? keys.pop.fetch(:hash_type,HashWithIndifferentAccess) : HashWithIndifferentAccess

  keys, formatted_keys = format_keys(keys)
  keys_one = keys.size == 1

  pluck(*keys).map do |row|
    value = hash_type[formatted_keys.zip(keys_one ? [row] : row)]
    block_given ? yield(value) : value
  end
end

#pluck_to_struct(*keys) ⇒ Object Also known as: pluck_s



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/pluck_to_hash.rb', line 20

def pluck_to_struct(*keys)
  struct_type = keys[-1].is_a?(Hash) ? keys.pop.fetch(:struct_type,Struct) : Struct
  block_given = block_given?
  keys, formatted_keys = format_keys(keys)
  keys_one = keys.size == 1

  struct = struct_type.new(*formatted_keys)
  pluck(*keys).map do |row|
    value = keys_one ? struct.new(*[row]) : struct.new(*row)
    block_given ? yield(value) : value
  end
end