lib/dentaku/ast/functions/sum.rb
require_relative '../function' Dentaku::AST::Function.register(:sum, :numeric, ->(*args) { flatten_args = args.flatten if flatten_args.empty? raise Dentaku::ArgumentError.for( :too_few_arguments, function_name: 'SUM()', at_least: 1, given: 0 ), 'SUM() requires at least one argument' end flatten_args.map { |arg| Dentaku::AST::Function.numeric(arg) }.reduce(0, :+) })