Merge "Fixing dump tests for non-wikitext in NS_MAIN."
[lhc/web/wiklou.git] / tests / parser / parserTestsParserHook.php
index 936d061..24d852c 100644 (file)
 class ParserTestParserHook {
 
        static function setup( &$parser ) {
-               $parser->setHook( 'tag', array( __CLASS__, 'hook' ) );
-
+               $parser->setHook( 'tag', array( __CLASS__, 'dumpHook' ) );
+               $parser->setHook( 'statictag', array( __CLASS__, 'staticTagHook' ) );
                return true;
        }
 
-       static function hook( $in, $argv ) {
+       static function dumpHook( $in, $argv ) {
                ob_start();
                var_dump(
                        $in,
@@ -43,4 +43,28 @@ class ParserTestParserHook {
 
                return "<pre>\n$ret</pre>";
        }
+
+       static function staticTagHook( $in, $argv, $parser ) {
+               if ( ! count( $argv ) ) {
+                       $parser->static_tag_buf = $in;
+                       return '';
+               } elseif ( count( $argv ) === 1 && isset( $argv['action'] )
+                       && $argv['action'] === 'flush' && $in === null )
+               {
+                       // Clear the buffer, we probably don't need to
+                       if ( isset( $parser->static_tag_buf ) ) {
+                               $tmp = $parser->static_tag_buf;
+                       } else {
+                               $tmp = '';
+                       }
+                       $parser->static_tag_buf = null;
+                       return $tmp;
+               } else
+                       // wtf?
+                       return
+                               "\nCall this extension as <statictag>string</statictag> or as" .
+                               " <statictag action=flush/>, not in any other way.\n" .
+                               "text: " . var_export( $in, true ) . "\n" .
+                               "argv: " . var_export( $argv, true ) . "\n";
+       }
 }