diff --git a/lib/haml/html.rb b/lib/haml/html.rb index e7f063aa..da3c6ea8 100644 --- a/lib/haml/html.rb +++ b/lib/haml/html.rb @@ -131,8 +131,7 @@ module Haml def to_haml(tabs = 0) output = "#{tabulate(tabs)}" if HTML.options[:rhtml] && name[0...5] == 'haml:' - return output + HTML.send("haml_tag_#{name[5..-1]}", - CGI.unescapeHTML(self.innerHTML)) + return output + HTML.send("haml_tag_#{name[5..-1]}", CGI.unescapeHTML(self.inner_text)) end output += "%#{name}" unless name == 'div' && (attributes.include?('id') || attributes.include?('class')) diff --git a/test/haml/html2haml_test.rb b/test/haml/html2haml_test.rb index 0132e12f..9eb6a79b 100644 --- a/test/haml/html2haml_test.rb +++ b/test/haml/html2haml_test.rb @@ -40,6 +40,11 @@ class Html2HamlTest < Test::Unit::TestCase assert_equal '= h @item.title', render_rhtml('<%=h @item.title %>') assert_equal '= h @item.title', render_rhtml('<%=h @item.title -%>') end + + def test_rhtml_with_html_special_chars + assert_equal '= 3 < 5 ? "OK" : "Your computer is b0rken"', + render_rhtml(%Q{<%= 3 < 5 ? "OK" : "Your computer is b0rken" %>}) + end protected