Module: Trxl::MultFunction2

Defined in:
lib/trxl/trxl_grammar.rb

Instance Method Summary collapse

Instance Method Details

#eval(env = Environment.new) ⇒ Object



6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
# File 'lib/trxl/trxl_grammar.rb', line 6504

def eval(env = Environment.new)
  values = evaluated_expressions(env).compact
  return 0 if values.size == 0
  values.inject(1) do |sum, val|
    sum * if val.is_a?(Array)
      val.flatten.compact.inject(1) { |next_sum, v| next_sum * v }
    else
      val
    end
  end
end

#evaluated_expressions(env = Environment.new) ⇒ Object



6516
6517
6518
# File 'lib/trxl/trxl_grammar.rb', line 6516

def evaluated_expressions(env = Environment.new)
  expressions.map { |e| e.eval(env) }
end

#expressionsObject



6520
6521
6522
# File 'lib/trxl/trxl_grammar.rb', line 6520

def expressions
  [ expression ] + more_expressions.elements.map { |e| e.expression }
end