Class: Riml::Compiler::WhileNodeVisitor

Inherits:
Visitor
  • Object
show all
Defined in:
lib/compiler.rb

Instance Method Summary collapse

Methods inherited from Visitor

#initialize, #visit

Constructor Details

This class inherits a constructor from Riml::Compiler::Visitor

Instance Method Details

#compile(node) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/compiler.rb', line 102

def compile(node)
  node.condition.force_newline = true
  node.compiled_output = "while "
  node.compiled_output << "!" if UntilNode === node
  node.condition.accept visitor_for_node(node.condition)

  node.body.accept NodesVisitor.new(:propagate_up_tree => false)

  node.body.compiled_output.each_line do |line|
    node.compiled_output << node.indent + line
  end
  node.force_newline = true
  node.compiled_output << "endwhile"
end