class Dentaku::AST::Pluck

Public Class Methods

max_param_count() click to toggle source
# File lib/dentaku/ast/functions/pluck.rb, line 11
def self.max_param_count
  2
end
min_param_count() click to toggle source
# File lib/dentaku/ast/functions/pluck.rb, line 7
def self.min_param_count
  2
end

Public Instance Methods

value(context = {}) click to toggle source
# File lib/dentaku/ast/functions/pluck.rb, line 15
def value(context = {})
  collection = Array(@args[0].value(context))
  unless collection.all? { |elem| elem.is_a?(Hash) }
    raise ArgumentError.for(:incompatible_type, value: collection),
          'PLUCK() requires first argument to be an array of hashes'
  end

  pluck_path = @args[1].identifier

  collection.map { |h| h.transform_keys(&:to_s)[pluck_path] }
end