class JMESPath::Nodes::KeysFunction

Public Instance Methods

call(args) click to toggle source
# File lib/jmespath/nodes/function.rb, line 302
def call(args)
  if args.count == 1
    value = args.first
    if hash_like?(value)
      case value
      when Hash then value.keys.map(&:to_s)
      when Struct then value.members.map(&:to_s)
      else raise NotImplementedError
      end
    else
      return maybe_raise Errors::InvalidTypeError, "function keys() expects a hash"
    end
  else
    return maybe_raise Errors::InvalidArityError, "function keys() expects one argument"
  end
end