class Haml::Buffer
def push_script(result, preserve_script, in_tag = false, preserve_tag = false,
Properly formats the output of a script that was run in the
def push_script(result, preserve_script, in_tag = false, preserve_tag = false, escape_html = false, nuke_inner_whitespace = false) tabulation = @real_tabs if preserve_tag result = Haml::Helpers.preserve(result) elsif preserve_script result = Haml::Helpers.find_and_preserve(result, options[:preserve]) end result = result.to_s.rstrip result = html_escape(result) if escape_html has_newline = result.include?("\n") if in_tag && !nuke_inner_whitespace && (@options[:ugly] || !has_newline || preserve_tag) @buffer << result @real_tabs -= 1 return end @buffer << "\n" if in_tag && !nuke_inner_whitespace # Precompiled tabulation may be wrong if @tabulation > 0 && !in_tag result = tabs + result end if has_newline && !@options[:ugly] result = result.gsub "\n", "\n" + tabs(tabulation) # Add tabulation if it wasn't precompiled result = tabs(tabulation) + result if in_tag && !nuke_inner_whitespace end @buffer << "#{result}" @buffer << "\n" unless nuke_inner_whitespace if in_tag && !nuke_inner_whitespace # We never get here if @options[:ugly] is true @buffer << tabs(tabulation-1) @real_tabs -= 1 end nil end