execute(); } protected function __construct( $text ) { $this->text = $text; } protected function execute() { $text = $this->text; // Use Unix line endings, escape some wikitext stuff $text = str_replace( array( '<', '{{', '[[', '__', "\r" ), array( '<', '{{', '[[', '__', '' ), $text ); // join word-wrapped lines into one do { $prev = $text; $text = preg_replace( "/\n([\\*#\t])([^\n]*?)\n([^\n#\\*:]+)/", "\n\\1\\2 \\3", $text ); } while ( $text != $prev ); // Replace tab indents with colons $text = preg_replace( '/^\t\t/m', '::', $text ); $text = preg_replace( '/^\t/m', ':', $text ); $linkStart = '['; $linkEnd = ' $0]'; // turn (Tnnnn) into links $text = preg_replace( '/T\d+/', "{$linkStart}https://phabricator.wikimedia.org/$0{$linkEnd}", $text ); // turn (bug nnnn) into links $text = preg_replace( '/bug (\d+)/', "{$linkStart}https://bugzilla.wikimedia.org/$1{$linkEnd}", $text ); // add links to manual to every global variable mentioned $text = preg_replace( '/\$wg[a-z0-9_]+/i', "{$linkStart}https://www.mediawiki.org/wiki/Manual:$0{$linkEnd}", $text ); return $text; } }