class JMESPath::Nodes::AvgFunction

def call(args)

def call(args)
  if args.count == 1
    values = args.first
  else
    return maybe_raise Errors::InvalidArityError, 'function avg() expects one argument'
  end
  if values.respond_to?(:to_ary)
    values = values.to_ary
    return nil if values.empty?
    values.inject(0) do |total, n|
      if Numeric === n
        total + n
      else
        return maybe_raise Errors::InvalidTypeError, 'function avg() expects numeric values'
      end
    end / values.size.to_f
  else
    return maybe_raise Errors::InvalidTypeError, 'function avg() expects a number'
  end
end