class Riml::Compiler::ForNodeVisitor
Public Instance Methods
compile(node)
click to toggle source
# File lib/riml/compiler.rb, line 627 def compile(node) scope_visitor = EstablishScopeVisitor.new(:scope => node.to_scope) if node.variables node.variables.parent_node = node node.variables.accept(scope_visitor) node.variables.accept( visitor_for_node( node.variables, :propagate_up_tree => false ) ) node.compiled_output = "for #{node.variables.compiled_output} in " else node.variable.parent_node = node node.variable.accept(scope_visitor) set_modifier(node.variable) node.compiled_output = "for #{node.variable.full_name} in " end node.in_expression.parent_node = node node.in_expression.force_newline = true node.in_expression.accept(visitor_for_node(node.in_expression)) node.expressions.parent_node = node node.expressions.accept(scope_visitor) node.expressions.accept(NodesVisitor.new :propagate_up_tree => false) body = node.expressions.compiled_output body.each_line do |line| node.compiled_output << node.indent + line end node.compiled_output << "endfor\n" end