From 6c247aa5917d0f2f1bca6e4d3c42fa1677b98750 Mon Sep 17 00:00:00 2001 From: Kevin Israel Date: Fri, 21 Nov 2014 02:49:18 -0500 Subject: [PATCH] InstallDocFormatter: Hyperlink Phabricator task numbers Also removed the callback functions for the existing regexes. Nothing has to be or is encoded or escaped at this time, so preg_replace() can be used instead of preg_replace_callback(). Change-Id: I8cdddd602dcf7b67b8f2b06149b6a0859c70342c --- includes/installer/InstallDocFormatter.php | 34 +++++++++++-------- .../installer/InstallDocFormatterTest.php | 15 ++++++++ 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/includes/installer/InstallDocFormatter.php b/includes/installer/InstallDocFormatter.php index 3250ff8a3a..0d52e64da4 100644 --- a/includes/installer/InstallDocFormatter.php +++ b/includes/installer/InstallDocFormatter.php @@ -44,25 +44,31 @@ class InstallDocFormatter { // 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_callback( '/bug (\d+)/', array( $this, 'replaceBugLinks' ), $text ); + $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_callback( - '/(\$wg[a-z0-9_]+)/i', - array( $this, 'replaceConfigLinks' ), + $text = preg_replace( + '/\$wg[a-z0-9_]+/i', + "{$linkStart}https://www.mediawiki.org/wiki/Manual:$0{$linkEnd}", $text ); return $text; } - - protected function replaceBugLinks( $matches ) { - return '[https://bugzilla.wikimedia.org/' . - $matches[1] . ' bug ' . $matches[1] . ']'; - } - - protected function replaceConfigLinks( $matches ) { - return '[https://www.mediawiki.org/wiki/Manual:' . - $matches[1] . ' ' . $matches[1] . ']'; - } } diff --git a/tests/phpunit/includes/installer/InstallDocFormatterTest.php b/tests/phpunit/includes/installer/InstallDocFormatterTest.php index 064d51856f..724f0c885f 100644 --- a/tests/phpunit/includes/installer/InstallDocFormatterTest.php +++ b/tests/phpunit/includes/installer/InstallDocFormatterTest.php @@ -34,6 +34,21 @@ class InstallDocFormatterTest extends MediaWikiTestCase { array( ':One indentation', "\tOne indentation", 'Replacing a single \t' ), array( '::Two indentations', "\t\tTwo indentations", 'Replacing 2 x \t' ), + # Transform 'T123' links + array( + '[https://phabricator.wikimedia.org/T123 T123]', + 'T123', 'Testing T123 links' ), + array( + 'bug [https://phabricator.wikimedia.org/T123 T123]', + 'bug T123', 'Testing bug T123 links' ), + array( + '([https://phabricator.wikimedia.org/T987654 T987654])', + '(T987654)', 'Testing (T987654) links' ), + + # "Tabc" shouldn't work + array( 'Tfoobar', 'Tfoobar', "Don't match T followed by non-digits" ), + array( 'T!!fakefake!!', 'T!!fakefake!!', "Don't match T followed by non-digits" ), + # Transform 'bug 123' links array( '[https://bugzilla.wikimedia.org/123 bug 123]', -- 2.20.1