Module: Trxl::SumFunction2

Defined in:
lib/trxl/trxl_grammar.rb

Instance Method Summary collapse

Instance Method Details

#eval(env = Environment.new) ⇒ Object



6264
6265
6266
6267
6268
6269
6270
6271
6272
# File 'lib/trxl/trxl_grammar.rb', line 6264

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

#evaluated_expressions(env = Environment.new) ⇒ Object



6274
6275
6276
# File 'lib/trxl/trxl_grammar.rb', line 6274

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

#expressionsObject



6278
6279
6280
# File 'lib/trxl/trxl_grammar.rb', line 6278

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