class Riml::Compiler::UnlessNodeVisitor
Public Instance Methods
compile(node)
click to toggle source
# File lib/riml/compiler.rb, line 69 def compile(node) condition_visitor = visitor_for_node(node.condition) node.condition.parent_node = node node.condition.force_newline = true node.compiled_output = "if " node.compiled_output << "!" if UnlessNode === node node.condition.accept(condition_visitor) node.body.accept(NodesVisitor.new(:propagate_up_tree => false)) node.body.compiled_output.each_line do |line| outdent = line =~ /\A(\s*)(else\s*|elseif .+)$/ if outdent && node.non_nested? node.compiled_output << node.outdent + line else node.compiled_output << node.indent + line end end node.compiled_output << "\n" unless node.compiled_output[-1, 1] == "\n" node.compiled_output << "endif\n" end