module Haml::Precompiler

def flush_merged_text

def flush_merged_text
  return if @to_merge.empty?
  str = ""
  mtabs = 0
  newlines = 0
  @to_merge.each do |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 << "\#{#{"\n" * newlines}#{val}}"
      mtabs = 0
      newlines = 0
    when :newlines
      newlines += val
    else
      raise SyntaxError.new("[HAML BUG] Undefined entry in Haml::Precompiler@to_merge.")
    end
  end
  @precompiled <<
    if @options[:ugly]
      "_hamlout.buffer << \"#{str}\";"
    else
      "_hamlout.push_text(\"#{str}\", #{mtabs}, #{@dont_tab_up_next_text.inspect});"
    end
  @precompiled << "\n" * newlines
  @to_merge = []
  @dont_tab_up_next_text = false
end