class JMESPath::Nodes::JoinFunction

def call(args)

def call(args)
  if args.count == 2
    glue = args[0]
    values = args[1]
    if !glue.respond_to?(:to_str)
      return maybe_raise Errors::InvalidTypeError, 'function join() expects the first argument to be a string'
    elsif values.respond_to?(:to_ary) && values.to_ary.all? { |v| v.respond_to?(:to_str) }
      values.to_ary.join(glue)
    else
      return maybe_raise Errors::InvalidTypeError, 'function join() expects values to be an array of strings'
    end
  else
    return maybe_raise Errors::InvalidArityError, 'function join() expects an array of strings'
  end
end