wiki.techinc.nl/includes/installer/InstallDocFormatter.php
Kunal Mehta 6e9b4f0e9c Convert all array() syntax to []
Per wikitech-l consensus:
 https://lists.wikimedia.org/pipermail/wikitech-l/2016-February/084821.html

Notes:
* Disabled CallTimePassByReference due to false positives (T127163)

Change-Id: I2c8ce713ce6600a0bb7bf67537c87044c7a45c4b
2016-02-17 01:33:00 -08:00

74 lines
2.1 KiB
PHP

<?php
/**
* Installer-specific wikitext formatting.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
class InstallDocFormatter {
static function format( $text ) {
$obj = new self( $text );
return $obj->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" ],
[ '&lt;', '&#123;&#123;', '&#91;&#91;', '&#95;&#95;', '' ], $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 = '<span class="config-plainlink">[';
$linkEnd = ' $0]</span>';
// 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;
}
}