mOptions = new ParserOptions();
$name = isset( $wgParserConf['preprocessorClass'] ) ? $wgParserConf['preprocessorClass'] : 'Preprocessor_DOM';
$this->mPreprocessor = new $name( $this );
}
function getStripList() {
return array( 'gallery', 'display map' /* Used by Maps, see r80025 CR */, '/foo' );
}
function provideCases() {
return array(
array( "Foo", "Foo" ),
array( "", "<!-- Foo -->" ),
array( "", "<!-- Foo --><!-- Bar -->" ),
array( " ", "<!-- Foo --> <!-- Bar -->" ),
array( " \n ", "<!-- Foo --> \n <!-- Bar -->" ),
array( " \n \n", "<!-- Foo --> \n <!-- Bar -->\n" ),
array( " \n", "<!-- Foo --> <!-- Bar -->\n" ),
array( "Bar", "<!-->Bar" ),
array( "\n== Baz ==\n", "== Foo ==\n <!-- Bar -->\n== Baz ==\n" ),
array( "", "gallery" ),
array( "Foo Bar", "Foo gallery Bar" ),
array( "", "gallery</gallery>" ),
array( " ", "<foo> gallery</gallery>" ),
array( " ", "<foo> gallery<gallery></gallery>" ),
array( " Foo bar ", "<noinclude> Foo bar </noinclude>" ),
array( "foo bar", "galleryfoo bar" ),
array( "", "gallery</gallery</gallery>" ),
array( "=== Foo === ", "=== Foo === " ),
array( "=== Foo === ", "==<!-- -->= Foo === " ),
array( "=== Foo === ", "=== Foo ==<!-- -->= " ),
array( "=== Foo ===\n", "=== Foo ===<!-- -->\n" ),
array( "=== Foo === \n", "=== Foo ===<!-- --> <!-- -->\n" ),
array( "== Foo ==\n== Bar == \n", "== Foo ==\n== Bar == \n" ),
array( "===========", "===========" ),
array( "Foo\n=\n==\n=\n", "Foo\n=\n==\n=\n" ),
array( "{{Foo}}", "Foo" ),
array( "\n{{Foo}}", "\nFoo" ),
array( "{{Foo|bar}}", "Foobar" ),
array( "{{Foo|bar}}a", "Foobara" ),
array( "{{Foo|bar|baz}}", "Foobarbaz" ),
array( "{{Foo|1=bar}}", "Foo1=bar" ),
array( "{{Foo|bar=baz}}", "Foobar=baz" ),
array( "{{Foo|1=bar|baz}}", "Foo1=barbaz" ),
array( "{{Foo|bar|foo=baz}}", "Foobarfoo=baz" ),
array( "{{{1}}}", "1" ),
array( "{{{1|}}}", "1" ),
array( "{{{Foo}}}", "Foo" ),
array( "{{{Foo|}}}", "Foo" ),
array( "{{{Foo|bar|baz}}}", "Foobarbaz" ),
array( "{{Foo}}", "{<!-- -->{Foo}}" ),
array( "{{{{Foobar}}}}", "{Foobar}" ),
array( "{{{{{Foo}}}}}", "Foo" ),
array( "{{{{{Foo}} }}}", "Foo " ),
array( "{{{{{{Foo}}}}}}", "Foo" ),
array( "{{{{{{Foo}}}}}", "{Foo" ),
array( "[[[Foo]]", "[[[Foo]]" ),
array( "{{Foo|[[[[bar]]|baz]]}}", "Foo[[[[bar]]|baz]]" ), // This test is important, since it means the difference between having the [[ rule stacked or not
array( "{{Foo|[[[[bar]|baz]]}}", "{{Foo|[[[[bar]|baz]]}}" ),
array( "{{Foo|Foo [[[[bar]|baz]]}}", "{{Foo|Foo [[[[bar]|baz]]}}" ),
array( "Foo BarBaz", "Foo display mapBar</display map >Baz" ),
array( "Foo BarBaz", "Foo display map fooBar</display map >Baz" ),
array( "Foo ", "Foo gallery bar="baz" " ),
array( "Foo/foo>", "/fooFoo<//foo>" ), # Worth blacklisting IMHO
/* array( file_get_contents( dirname( __FILE__ ) . '/QuoteQuran.txt' ), file_get_contents( dirname( __FILE__ ) . '/QuoteQuranExpanded.txt' ) ), */
);
}
/**
* @dataProvider provideCases
*/
function testPreprocessorOutput( $wikiText, $expectedXml ) {
$this->assertEquals( $expectedXml, $this->mPreprocessor->preprocessToXml( $wikiText ) );
}
}