]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - tests/parser/ParserTestParserHook.php
MediaWiki 1.30.2
[autoinstalls/mediawiki.git] / tests / parser / ParserTestParserHook.php
1 <?php
2 /**
3  * A basic extension that's used by the parser tests to test whether input and
4  * arguments are passed to extensions properly.
5  *
6  * Copyright © 2005, 2006 Ævar Arnfjörð Bjarmason
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  * http://www.gnu.org/copyleft/gpl.html
22  *
23  * @file
24  * @ingroup Testing
25  * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
26  */
27
28 class ParserTestParserHook {
29
30         static function setup( &$parser ) {
31                 $parser->setHook( 'tag', [ __CLASS__, 'dumpHook' ] );
32                 $parser->setHook( 'tåg', [ __CLASS__, 'dumpHook' ] );
33                 $parser->setHook( 'statictag', [ __CLASS__, 'staticTagHook' ] );
34                 return true;
35         }
36
37         static function dumpHook( $in, $argv ) {
38                 return "<pre>\n" .
39                         var_export( $in, true ) . "\n" .
40                         var_export( $argv, true ) . "\n" .
41                         "</pre>";
42         }
43
44         static function staticTagHook( $in, $argv, $parser ) {
45                 if ( !count( $argv ) ) {
46                         $parser->static_tag_buf = $in;
47                         return '';
48                 } elseif ( count( $argv ) === 1 && isset( $argv['action'] )
49                         && $argv['action'] === 'flush' && $in === null
50                 ) {
51                         // Clear the buffer, we probably don't need to
52                         if ( isset( $parser->static_tag_buf ) ) {
53                                 $tmp = $parser->static_tag_buf;
54                         } else {
55                                 $tmp = '';
56                         }
57                         $parser->static_tag_buf = null;
58                         return $tmp;
59                 } else { // wtf?
60                         return
61                                 "\nCall this extension as <statictag>string</statictag> or as" .
62                                 " <statictag action=flush/>, not in any other way.\n" .
63                                 "text: " . var_export( $in, true ) . "\n" .
64                                 "argv: " . var_export( $argv, true ) . "\n";
65                 }
66         }
67 }