diff --git a/HTML_Generator.php b/HTML_Generator.php index e979db3f..4d68a0b2 100644 --- a/HTML_Generator.php +++ b/HTML_Generator.php @@ -6,7 +6,7 @@ class HTML_Generator function generateFromToken($token) { if (is_a($token, 'MF_StartTag')) { $attr = $this->generateAttributes($token->attributes); - return '<' . $token->name . ' ' . $attr . '>'; + return '<' . $token->name . ($attr ? ' ' : '') . $attr . '>'; } elseif (is_a($token, 'MF_EndTag')) { return 'name . '>'; diff --git a/PureHTMLDefinition.php b/PureHTMLDefinition.php index 0ecc201f..10365898 100644 --- a/PureHTMLDefinition.php +++ b/PureHTMLDefinition.php @@ -3,10 +3,11 @@ class PureHTMLDefinition { + var $generator; var $info = array(); function PureHTMLDefinition() { - + $this->generator = new HTML_Generator(); } function loadData() { @@ -136,7 +137,10 @@ class PureHTMLDefinition $result = array(); foreach($tokens as $token) { if (is_subclass_of($token, 'MF_Tag')) { - if (!isset($this->info[$token->name])) continue; + if (!isset($this->info[$token->name])) { + // invalid tag, generate HTML and insert in + $token = new MF_Text($this->generator->generateFromToken($token)); + } } elseif (is_a($token, 'MF_Comment')) { // strip comments continue; diff --git a/tests/HTML_Generator.php b/tests/HTML_Generator.php index e2ad7728..30be843e 100644 --- a/tests/HTML_Generator.php +++ b/tests/HTML_Generator.php @@ -27,6 +27,9 @@ class UnitTest_HTML_Generator extends UnitTestCase $inputs[3] = new MF_EmptyTag('br', array('style' => 'font-family:"Courier New";')); $expect[3] = '
'; + $inputs[4] = new MF_StartTag('asdf'); + $expect[4] = ''; + foreach ($inputs as $i => $input) { $result = $this->gen->generateFromToken($input); $this->assertEqual($result, $expect[$i]); diff --git a/tests/PureHTMLDefinition.php b/tests/PureHTMLDefinition.php index f325c889..5e7d27c2 100644 --- a/tests/PureHTMLDefinition.php +++ b/tests/PureHTMLDefinition.php @@ -28,6 +28,29 @@ class UnitTest_PureHTMLDefinition extends UnitTestCase ); $expect[1] = $inputs[1]; + $inputs[2] = array( + new MF_StartTag('asdf') + ,new MF_EndTag('asdf') + ,new MF_StartTag('d', array('href' => 'bang!')) + ,new MF_EndTag('d') + ,new MF_StartTag('pooloka') + ,new MF_StartTag('poolasdf') + ,new MF_StartTag('ds', array('moogle' => '&')) + ,new MF_EndTag('asdf') + ,new MF_EndTag('asdf') + ); + $expect[2] = array( + new MF_Text('') + ,new MF_Text('') + ,new MF_Text('') + ,new MF_Text('') + ,new MF_Text('') + ,new MF_Text('') + ,new MF_Text('') + ,new MF_Text('') + ,new MF_Text('') + ); + foreach ($inputs as $i => $input) { $result = $this->def->removeForeignElements($input); $this->assertEqual($result, $expect[$i]);