setHook( 'stest', 'efSampleRender' ); $wgParser->setHook( 'fb:like-box', 'efSampleRender' ); return true; } function efSampleRender( $text, $args, $parser ) { $attrs = ""; foreach( $args as $name => $value ) { $attrs .= " $name=\"" . htmlspecialchars($value) . '"'; } return "" . $parser->recursiveTagParse($text) . ""; } ///// TEST DATA ///// $inputOutputPairs = array( 'These attribs should be passed through' => 'These attribs should be passed through', 'Denied' => 'Denied', '' => '', '' => '', '' => '' ); ///// TEST DATA ///// print "Testing parser tag examples...\n"; print count($inputOutputPairs)." test cases.\n"; global $wgParser, $wgUser; $parserOptions = ParserOptions::newFromUser( $wgUser ); $title = Title::makeTitle( NS_MAIN, "Main_Page"); $numSuccesses = 0; $numFailures = 0; foreach($inputOutputPairs as $input => $expectedOutput){ $actualOutput = $wgParser->parse($input, $title, $parserOptions)->getText(); // The parser wraps the tags in paragraphs. $expectedOutput = "

$expectedOutput\n

"; if($actualOutput != $expectedOutput){ print "\n------------------------------------------\n"; print " MISMATCH!\n"; print "------------------------------------------\n"; print "INPUT: $input\n"; print "EXPECTED: $expectedOutput\n"; print "ACTUAL: $actualOutput\n"; print "------------------------------------------\n"; $numFailures++; } else { print "Test passed.\n"; $numSuccesses++; } } print "\n\n\n== RESULTS ==\n"; print "Number of failures: $numFailures\n"; print "Number of successes: $numSuccesses\n"; if($numFailures > 0){ print "THE TESTS FAILED!! <--------------- BAD BAD BAD\n"; } else { print "All tests passed.\n"; }