Module: Trxl::MultFunction2
- Defined in:
- lib/trxl/trxl_grammar.rb
Instance Method Summary collapse
- #eval(env = Environment.new) ⇒ Object
- #evaluated_expressions(env = Environment.new) ⇒ Object
- #expressions ⇒ Object
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 |
#expressions ⇒ Object
6520 6521 6522 |
# File 'lib/trxl/trxl_grammar.rb', line 6520 def expressions [ expression ] + more_expressions.elements.map { |e| e.expression } end |