class JMESPath::Nodes::AvgFunction

Public Instance Methods

call(args) click to toggle source
# File lib/jmespath/nodes/function.rb, line 103
def call(args)
  if args.count == 1
    values = args.first
  else
    return maybe_raise Errors::InvalidArityError, "function avg() expects one argument"
  end
  if Array === values
    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