module Haml::Util

def unescape_interpolation(str, escape_html = nil)

def unescape_interpolation(str, escape_html = nil)
  res = ''.dup
  rest = Haml::Util.handle_interpolation str.dump do |scan|
    escapes = (scan[2].size - 1) / 2
    char = scan[3] # '{', '@' or '$'
    res << scan.matched[0...-3 - escapes]
    if escapes % 2 == 1
      res << "\##{char}"
    else
      interpolated = if char == '{'
        balance(scan, ?{, ?}, 1)[0][0...-1]
      else
        scan.scan(/\w+/)
      end
      content = eval("\"#{interpolated}\"")
      content = "#{char}#{content}" if char == '@' || char == '$'
      content = "Haml::Util.escape_html_safe((#{content}).to_s)" if escape_html
      res << "\#{#{content}}"
    end
  end
  res + rest
end