diff options
author | Matt Farina <[email protected]> | 2013-05-06 20:41:28 -0400 |
---|---|---|
committer | Matt Farina <[email protected]> | 2013-05-06 20:41:28 -0400 |
commit | a98febd74b7c6e7d18b11ca8a75b647f56fcf2c6 (patch) | |
tree | 3c22dd14c39409bd414cdbdbc0809ca3d9d0a2d4 | |
parent | cb6da5768688773ed56c0b05f27c8529b6dc34c8 (diff) |
Updated the traverser text method and added a test.
-rw-r--r-- | src/HTML5/Serializer/Traverser.php | 30 | ||||
-rw-r--r-- | test/HTML5/Serializer/TraverserTest.php | 29 |
2 files changed, 14 insertions, 45 deletions
diff --git a/src/HTML5/Serializer/Traverser.php b/src/HTML5/Serializer/Traverser.php index be485f4..788292d 100644 --- a/src/HTML5/Serializer/Traverser.php +++ b/src/HTML5/Serializer/Traverser.php @@ -14,17 +14,6 @@ use \HTML5\Elements; */ class Traverser { - // TODO: Refactor this into an element mask. - static $literal_elements = array( - 'style' => 1, - 'script' => 1, - 'xmp' => 1, - 'iframe' => 1, - 'noembed' => 1, - 'noframes' => 1, - 'plaintext' => 1, - ); - /** Namespaces that should be treated as "local" to HTML5. */ static $local_ns = array( 'http://www.w3.org/1999/xhtml' => 'html', @@ -173,7 +162,7 @@ class Traverser { * The text node to write. */ protected function text($ele) { - if ($this->isLiteral($ele)) { + if ($ele->parentNode && Elements::isA($ele->parentNode->tagName, Elements::TEXT_RAW | Elements::TEXT_RCDATA)) { $this->wr($ele->wholeText); return; } @@ -291,23 +280,6 @@ class Traverser { } /** - * Is the element literal? - * - * @param mixed $element - * An element implementing DOMNode. - * - * @return boolean - * True if literal and false otherise. - */ - protected function isLiteral($element) { - if (!$element->parentNode) { - return FALSE; - } - return isset(self::$literal_elements[$element->parentNode->tagName]); - - } - - /** * Is an element local? * * @param mixed $ele diff --git a/test/HTML5/Serializer/TraverserTest.php b/test/HTML5/Serializer/TraverserTest.php index fef5135..0b18bb6 100644 --- a/test/HTML5/Serializer/TraverserTest.php +++ b/test/HTML5/Serializer/TraverserTest.php @@ -84,22 +84,19 @@ class TraverserTest extends \HTML5\Tests\TestCase { } function testText() { - // $dom = new \DOMDocument(); - // $dom->loadHTML('<!doctype html> - // <html lang="en"> - // <head> - // <meta charset="utf-8"> - // <title>Test</title> - // </head> - // <body> - // <textarea>baz()</textarea> - // </body> - // </html>'); - // //var_export($dom); - // print_r($dom); - // $list = $dom->getElementsByTagName('textarea'); - // print_r($list->item(0)); - //print_r($dom->get()); + $dom = \HTML5::parse('<!doctype html> + <html lang="en"> + <head> + <script>baz();</script> + </head> + </html>'); + + $stream = fopen('php://temp', 'w'); + $t = new Traverser($dom, $stream); + $m = $this->getProtectedMethod('text'); + $list = $dom->getElementsByTagName('script'); + $m->invoke($t, $list->item(0)->childNodes->item(0)); + $this->assertEquals('baz();', stream_get_contents($stream, -1, 0)); } }
\ No newline at end of file |