module Haml::Precompiler

def flush_merged_text

def flush_merged_text
  return if @to_merge.empty?
  text, tab_change = @to_merge.inject(["", 0]) do |(str, mtabs), (type, val, tabs)|
    case type
    when :text
      [str << val.inspect[1...-1], mtabs + tabs]
    when :script
      if mtabs != 0 && !@options[:ugly]
        val = "_hamlout.adjust_tabs(#{mtabs}); " + val
      end
      [str << "\#{#{val}}", 0]
    else
      raise SyntaxError.new("[HAML BUG] Undefined entry in Haml::Precompiler@to_merge.")
    end
  end
  @precompiled <<
    if @options[:ugly]
      "_hamlout.buffer << \"#{text}\";"
    else
      "_hamlout.push_text(\"#{text}\", #{tab_change}, #{@dont_tab_up_next_text.inspect});"
    end
  @to_merge = []
  @dont_tab_up_next_text = false
end