Add comments to Linker::formatLinksInComment()
authorKevin Israel <pleasestand@live.com>
Tue, 30 Oct 2012 01:49:15 +0000 (21:49 -0400)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 29 Nov 2012 22:33:48 +0000 (22:33 +0000)
Per Tim Starling's suggestion, added comments to the regex in
Linker::formatLinksInComment().

Change-Id: If85567e5a2e57dd56f5f263f3512e9ed2f9c940c

includes/Linker.php

index 9b49015..408538b 100644 (file)
@@ -1376,7 +1376,18 @@ class Linker {
                self::$commentContextTitle = $title;
                self::$commentLocal = $local;
                $html = preg_replace_callback(
-                       '/\[\[:?([^\]|]+)(?:\|((?:]?[^\]|])*+))*\]\]([^[]*)/',
+                       '/
+                               \[\[
+                               :? # ignore optional leading colon
+                               ([^\]|]+) # 1. link target; page names cannot include ] or |
+                               (?:\|
+                                       # 2. a pipe-separated substring; only the last is captured
+                                       # Stop matching at | and ]] without relying on backtracking.
+                                       ((?:]?[^\]|])*+)
+                               )*
+                               \]\]
+                               ([^[]*) # 3. link trail (the text up until the next link)
+                       /x',
                        array( 'Linker', 'formatLinksInCommentCallback' ),
                        $comment );
                self::$commentContextTitle = null;