From b082c626f6510eada69d6a95fa79ffa1c869049a Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Mon, 24 Jun 2013 21:51:47 -0400 Subject: #8: Added DOMDocumentFragment serializing. --- src/HTML5/Serializer/Traverser.php | 7 +++++++ test/HTML5/Serializer/TraverserTest.php | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/HTML5/Serializer/Traverser.php b/src/HTML5/Serializer/Traverser.php index ae3c10f..174528e 100644 --- a/src/HTML5/Serializer/Traverser.php +++ b/src/HTML5/Serializer/Traverser.php @@ -100,6 +100,13 @@ class Traverser { case XML_COMMENT_NODE: $this->rules->comment($node); break; + case XML_DOCUMENT_FRAG_NODE: + // Document fragments are a special case. Only the children need to + // be serialized. + if ($node->hasChildNodes()) { + $this->children($node->childNodes); + } + break; // Currently we don't support embedding DTDs. default: print ''; diff --git a/test/HTML5/Serializer/TraverserTest.php b/test/HTML5/Serializer/TraverserTest.php index e160ce6..faeb0e3 100644 --- a/test/HTML5/Serializer/TraverserTest.php +++ b/test/HTML5/Serializer/TraverserTest.php @@ -56,4 +56,18 @@ class TraverserTest extends \HTML5\Tests\TestCase { $this->assertInstanceOf('\HTML5\Serializer\Traverser', $t); } + + // function testFragment() { + // $html = 'foo'; + // $input = new \HTML5\Parser\StringInputStream($html); + // $dom = \HTML5::parseFragment($input); + + // $this->assertInstanceOf('\DOMDocumentFragment', $dom); + + // $stream = fopen('php://temp', 'w'); + // $t = new Traverser($dom, $stream, \HTML5::options()); + + // $out = $t->walk(); + // $this->assertEquals($html, stream_get_contents($stream, -1, 0)); + // } } \ No newline at end of file -- cgit v1.2.3