Method: XlsFunction::Evaluators::Functions::Switch#eval

Defined in:
lib/xls_function/evaluators/functions/switch.rb

#evalObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/xls_function/evaluators/functions/switch.rb', line 11

def eval
  condition = arg_list.first.evaluate(context)

  arg_list[1..-1].each_slice(2) do |expr, value|
    ex_value = expr&.evaluate(context)
    in_value = value&.evaluate(context)

    return in_value if ex_value == condition

    return ex_value if in_value.nil?
  end

  XlsFunction::ErrorValue.na(class_info(error_message(:missing_value_for_function)))
end