class Haml::Compiler::CommentCompiler
def compile(node, &block)
def compile(node, &block) if node.value[:conditional] compile_conditional_comment(node, &block) else compile_html_comment(node, &block) end end
def compile_conditional_comment(node, &block)
def compile_conditional_comment(node, &block) condition = node.value[:conditional] if node.value[:conditional] =~ /\A\[(\[*[^\[\]]+\]*)\]/ condition = $1 end content = if node.children.empty? compile_text(node) else yield(node) end [:html, :condcomment, condition, content, node.value[:revealed]] end
def compile_html_comment(node, &block)
def compile_html_comment(node, &block) if node.children.empty? [:html, :comment, compile_text(node)] else [:html, :comment, yield(node)] end end
def compile_text(node)
def compile_text(node) text = if node.value[:parse] # Just always escaping the result for safety. We could respect # escape_html, but I don't see any use case for it. [:escape, true, [:dynamic, node.value[:text]]] else [:static, node.value[:text]] end [:multi, [:static, ' '], text, [:static, ' ']] end