summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/HTML5/Parser/DOMTreeBuilder.php11
-rw-r--r--test/HTML5/Parser/DOMTreeBuilderTest.php24
2 files changed, 32 insertions, 3 deletions
diff --git a/src/HTML5/Parser/DOMTreeBuilder.php b/src/HTML5/Parser/DOMTreeBuilder.php
index be9fa23..2807790 100644
--- a/src/HTML5/Parser/DOMTreeBuilder.php
+++ b/src/HTML5/Parser/DOMTreeBuilder.php
@@ -30,7 +30,14 @@ class DOMTreeBuilder implements EventHandler {
$this->doc = \DOMImplementation::createDocument(NULL, 'html', $dt);
$this->doc->errors = array();
- $this->current = $this->doc->documentElement();
+ $this->current = $this->doc->documentElement;
+ }
+
+ /**
+ * Get the document.
+ */
+ public function document() {
+ return $this->doc;
}
/**
@@ -71,7 +78,7 @@ class DOMTreeBuilder implements EventHandler {
public function endTag($name) {
$lname = $this->normalizeTagName($name);
- if ($this->current->tagName() != $lname) {
+ if ($this->current->tagName != $lname) {
return $this->quirksTreeResolver($lname);
}
diff --git a/test/HTML5/Parser/DOMTreeBuilderTest.php b/test/HTML5/Parser/DOMTreeBuilderTest.php
index 6ffae75..963000c 100644
--- a/test/HTML5/Parser/DOMTreeBuilderTest.php
+++ b/test/HTML5/Parser/DOMTreeBuilderTest.php
@@ -7,5 +7,27 @@ namespace HTML5\Parser;
require_once __DIR__ . '/../TestCase.php';
-class DOMTreeParserTest extends \HTML5\Tests\TestCase {
+class DOMTreeBuilderTest extends \HTML5\Tests\TestCase {
+
+ /**
+ * Convenience function for parsing.
+ */
+ protected function parse($string) {
+ $treeBuilder = new DOMTreeBuilder();
+ $input = new StringInputStream($string);
+ $scanner = new Scanner($input);
+ $parser = new Tokenizer($scanner, $treeBuilder);
+
+ $parser->parse();
+
+ return $treeBuilder->document();
+ }
+
+ public function testDocument() {
+ $html = "<!DOCTYPE html><html></html>";
+ $doc = $this->parse($html);
+
+ $this->assertInstanceOf('\DOMDocument', $doc);
+ $this->assertEquals('html', $doc->documentElement->tagName);
+ }
}