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