diff options
author | Matt Farina <[email protected]> | 2013-06-24 21:51:47 -0400 |
---|---|---|
committer | Matt Farina <[email protected]> | 2013-06-24 21:51:47 -0400 |
commit | b082c626f6510eada69d6a95fa79ffa1c869049a (patch) | |
tree | 398742cdaf4943cb0b361337e4f60bf4f7940e58 | |
parent | 0b34c2ed2ab884a44f97d8aa8a0a1e915366b733 (diff) |
#8: Added DOMDocumentFragment serializing.
-rw-r--r-- | src/HTML5/Serializer/Traverser.php | 7 | ||||
-rw-r--r-- | test/HTML5/Serializer/TraverserTest.php | 14 |
2 files changed, 21 insertions, 0 deletions
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 '<!-- Skipped -->'; 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 = '<span class="bar">foo</span>'; + // $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 |