From 9b468f4cd7daa9f1e8122938e6c2c5b8bf235a5f Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Fri, 21 Sep 2007 20:45:49 +0000 Subject: [html-scanner] Fix parsing of empty tags. Closes #7641. [anthony.bailey] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7528 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../vendor/html-scanner/html/document.rb | 3 +++ .../test/controller/html-scanner/document_test.rb | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) (limited to 'actionpack') diff --git a/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb b/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb index 29422937b2..329ab01560 100644 --- a/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb +++ b/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb @@ -22,6 +22,9 @@ module HTML #:nodoc: if node.tag? if node_stack.length > 1 && node.closing == :close if node_stack.last.name == node.name + if node_stack.last.children.empty? + node_stack.last.children << Text.new(node_stack.last, node.line, node.position, "") + end node_stack.pop else open_start = node_stack.last.position - 20 diff --git a/actionpack/test/controller/html-scanner/document_test.rb b/actionpack/test/controller/html-scanner/document_test.rb index a6ba70dde1..0719883f31 100644 --- a/actionpack/test/controller/html-scanner/document_test.rb +++ b/actionpack/test/controller/html-scanner/document_test.rb @@ -75,6 +75,26 @@ class DocumentTest < Test::Unit::TestCase assert_not_nil doc.find(:tag => "div", :children => { :count => 1, :only => { :tag => "table" } }) end + def test_tag_nesting_nothing_to_s + doc = HTML::Document.new("") + assert_equal "", doc.root.to_s + end + + def test_tag_nesting_space_to_s + doc = HTML::Document.new(" ") + assert_equal " ", doc.root.to_s + end + + def test_tag_nesting_text_to_s + doc = HTML::Document.new("text") + assert_equal "text", doc.root.to_s + end + + def test_tag_nesting_tag_to_s + doc = HTML::Document.new("") + assert_equal "", doc.root.to_s + end + def test_parse_cdata doc = HTML::Document.new(<<-HTML)