Method: XlsFunction::Evaluators::FunctionEvaluator#map_eval

Defined in:
lib/xls_function/evaluators/function_evaluator.rb

#map_eval(args) ⇒ Object



70
71
72
73
74
75
76
77
78
# File 'lib/xls_function/evaluators/function_evaluator.rb', line 70

def map_eval(args)
  arg_array = args.map { |x| Array(x) }
                  .then { |xs| xs.length == 1 ? xs : xs[0].product(*xs[1..]) }
  return XlsFunction::ErrorValue.na(class_info(error_message(:invalid_value_for_function))) if arg_array.max_depth > 2

  arg_array.map do |arg|
    to_proc.call(*arg) # Executes each created arguments as argument of self.
  end
end