/**
* This function is called by all recent changes variants, by the page history,
* and by the user contributions list. It is responsible for formatting edit
- * comments. It escapes any HTML in the comment, but adds some CSS to format
+ * summaries. It escapes any HTML in the summary, but adds some CSS to format
* auto-generated comments (from section editing) and formats [[wikilinks]].
*
* @author Erik Moeller <moeller@scireview.de>
static $autocommentLocal;
/**
+ * Converts autogenerated comments in edit summaries into section links.
* The pattern for autogen comments is / * foo * /, which makes for
* some nasty regex.
* We look for all comments, match any text before and after the comment,
}
/**
+ * Helper function for Linker::formatAutocomments
* @param $match
* @return string
*/
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;