Class: TPPlus::Nodes::ForNode

Inherits:
Object
  • Object
show all
Defined in:
lib/tp_plus/nodes/for_node.rb

Instance Method Summary collapse

Constructor Details

#initialize(var_node, initial_value_node, final_value_node, block) ⇒ ForNode

Returns a new instance of ForNode.



4
5
6
7
8
9
# File 'lib/tp_plus/nodes/for_node.rb', line 4

def initialize(var_node, initial_value_node, final_value_node, block)
  @var_node           = var_node
  @initial_value_node = initial_value_node
  @final_value_node   = final_value_node
  @block              = block.flatten.reject {|n| n.is_a?(TerminatorNode) }
end

Instance Method Details

#block(context) ⇒ Object



11
12
13
# File 'lib/tp_plus/nodes/for_node.rb', line 11

def block(context)
  @s ||= @block.inject("") {|s,n| s << "#{n.eval(context)} ;\n" }
end

#eval(context) ⇒ Object



15
16
17
# File 'lib/tp_plus/nodes/for_node.rb', line 15

def eval(context)
  "FOR #{@var_node.eval(context)}=#{@initial_value_node.eval(context)} TO #{@final_value_node.eval(context)} ;\n#{block(context)}ENDFOR"
end