]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - maintenance/tests/parser/parserTestsStaticParserHook.php
MediaWiki 1.17.3
[autoinstallsdev/mediawiki.git] / maintenance / tests / parser / parserTestsStaticParserHook.php
1 <?php
2 /**
3  * A basic extension that's used by the parser tests to test whether the parser
4  * calls extensions when they're called inside comments, it shouldn't do that
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 Maintenance
25  * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
26  */
27
28 class ParserTestStaticParserHook {
29         static function setup( &$parser ) {
30                 $parser->setHook( 'statictag', array( __CLASS__, 'hook' ) );
31
32                 return true;
33         }
34
35         static function hook( $in, $argv, $parser ) {
36                 if ( ! count( $argv ) ) {
37                         $parser->static_tag_buf = $in;
38                         return '';
39                 } else if ( count( $argv ) === 1 && isset( $argv['action'] )
40                         && $argv['action'] === 'flush' && $in === null )
41                 {
42                         // Clear the buffer, we probably don't need to
43                         if ( isset( $parser->static_tag_buf ) ) {
44                                 $tmp = $parser->static_tag_buf;
45                         } else {
46                                 $tmp = '';
47                         }
48                         $parser->static_tag_buf = null;
49                         return $tmp;
50                 } else
51                         // wtf?
52                         return
53                                 "\nCall this extension as <statictag>string</statictag> or as" .
54                                 " <statictag action=flush/>, not in any other way.\n" .
55                                 "text: " . var_export( $in, true ) . "\n" .
56                                 "argv: " . var_export( $argv, true ) . "\n";
57         }
58 }