X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/includes/installer/InstallDocFormatter.php diff --git a/includes/installer/InstallDocFormatter.php b/includes/installer/InstallDocFormatter.php new file mode 100644 index 00000000..4163e2f9 --- /dev/null +++ b/includes/installer/InstallDocFormatter.php @@ -0,0 +1,74 @@ +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( [ '<', '{{', '[[', '__', "\r" ], + [ '<', '{{', '[[', '__', '' ], $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; + } +}