summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Farina <[email protected]>2013-06-24 21:51:47 -0400
committerMatt Farina <[email protected]>2013-06-24 21:51:47 -0400
commitb082c626f6510eada69d6a95fa79ffa1c869049a (patch)
tree398742cdaf4943cb0b361337e4f60bf4f7940e58
parent0b34c2ed2ab884a44f97d8aa8a0a1e915366b733 (diff)
#8: Added DOMDocumentFragment serializing.
-rw-r--r--src/HTML5/Serializer/Traverser.php7
-rw-r--r--test/HTML5/Serializer/TraverserTest.php14
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