diff options
author | Michael Koziarski <michael@koziarski.com> | 2007-09-21 20:45:49 +0000 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2007-09-21 20:45:49 +0000 |
commit | 9b468f4cd7daa9f1e8122938e6c2c5b8bf235a5f (patch) | |
tree | 26035d76b000cf31f6ada5155af5a4a2cd410628 /actionpack | |
parent | 4e0fef46369e78dd0b326c506b3006915edddfd3 (diff) | |
download | rails-9b468f4cd7daa9f1e8122938e6c2c5b8bf235a5f.tar.gz rails-9b468f4cd7daa9f1e8122938e6c2c5b8bf235a5f.tar.bz2 rails-9b468f4cd7daa9f1e8122938e6c2c5b8bf235a5f.zip |
[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
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/vendor/html-scanner/html/document.rb | 3 | ||||
-rw-r--r-- | actionpack/test/controller/html-scanner/document_test.rb | 20 |
2 files changed, 23 insertions, 0 deletions
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("<tag></tag>") + assert_equal "<tag></tag>", doc.root.to_s + end + + def test_tag_nesting_space_to_s + doc = HTML::Document.new("<tag> </tag>") + assert_equal "<tag> </tag>", doc.root.to_s + end + + def test_tag_nesting_text_to_s + doc = HTML::Document.new("<tag>text</tag>") + assert_equal "<tag>text</tag>", doc.root.to_s + end + + def test_tag_nesting_tag_to_s + doc = HTML::Document.new("<tag><nested /></tag>") + assert_equal "<tag><nested /></tag>", doc.root.to_s + end + def test_parse_cdata doc = HTML::Document.new(<<-HTML) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |