summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Farina <[email protected]>2013-05-06 20:41:28 -0400
committerMatt Farina <[email protected]>2013-05-06 20:41:28 -0400
commita98febd74b7c6e7d18b11ca8a75b647f56fcf2c6 (patch)
tree3c22dd14c39409bd414cdbdbc0809ca3d9d0a2d4
parentcb6da5768688773ed56c0b05f27c8529b6dc34c8 (diff)
Updated the traverser text method and added a test.
-rw-r--r--src/HTML5/Serializer/Traverser.php30
-rw-r--r--test/HTML5/Serializer/TraverserTest.php29
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