From 75fe1de1a15c5f83da53059efaef7c67902c9043 Mon Sep 17 00:00:00 2001 From: Asmir Mustafic Date: Tue, 30 Sep 2014 23:26:53 +0200 Subject: [PATCH] Handling empty documents --- src/HTML5/Serializer/OutputRules.php | 6 ++++-- test/HTML5/Serializer/OutputRulesTest.php | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/HTML5/Serializer/OutputRules.php b/src/HTML5/Serializer/OutputRules.php index 7ea7c6a..c009698 100644 --- a/src/HTML5/Serializer/OutputRules.php +++ b/src/HTML5/Serializer/OutputRules.php @@ -115,8 +115,10 @@ public function setTraverser(\Masterminds\HTML5\Serializer\Traverser $traverser) public function document($dom) { $this->doctype(); - $this->traverser->node($dom->documentElement); - $this->nl(); + if ($dom->documentElement) { + $this->traverser->node($dom->documentElement); + $this->nl(); + } } protected function doctype() diff --git a/test/HTML5/Serializer/OutputRulesTest.php b/test/HTML5/Serializer/OutputRulesTest.php index e89d723..aa2e0c5 100644 --- a/test/HTML5/Serializer/OutputRulesTest.php +++ b/test/HTML5/Serializer/OutputRulesTest.php @@ -76,6 +76,19 @@ public function testDocument() $this->assertEquals($expected, stream_get_contents($stream, - 1, 0)); } + public function testEmptyDocument() + { + $dom = $this->html5->loadHTML(''); + + $stream = fopen('php://temp', 'w'); + $r = new OutputRules($stream, $this->html5->getOptions()); + $t = new Traverser($dom, $stream, $r, $this->html5->getOptions()); + + $r->document($dom); + $expected = '' . PHP_EOL; + $this->assertEquals($expected, stream_get_contents($stream, - 1, 0)); + } + public function testDoctype() { $dom = $this->html5->loadHTML('foo');