aboutsummaryrefslogtreecommitdiffstats
path: root/includes/diff/TextDiffer/BaseTextDiffer.php
diff options
context:
space:
mode:
authorMusikAnimal <musikanimal@gmail.com>2023-10-02 19:20:49 -0400
committerMusikAnimal <musikanimal@gmail.com>2023-10-09 22:53:14 -0400
commit02e7fdb26af4694531b3886fa80c28ad1ffea039 (patch)
tree7017d74638e481a62adc284b54a381e95e52df77 /includes/diff/TextDiffer/BaseTextDiffer.php
parent77766d44c3a394c7a9435fa0d32768b5c6620416 (diff)
downloadmediawikicore-02e7fdb26af4694531b3886fa80c28ad1ffea039.tar.gz
mediawikicore-02e7fdb26af4694531b3886fa80c28ad1ffea039.zip
diffs: add line number headings to inline diffs
Adds new regex in BaseTextDiffer::localizeLineNumbers() to work with wikidiff2 inline diffs as well as table diffs. Since there are no "columns" in inline mode, we have a new message to indicate how the line numbers changed from the old diff versus the new. Deprecate DifferenceEngine::localiseLineNumbers() as no longer used and redundant to BaseTextDiffer::localizeLineNumbers(). Bug: T346460 Change-Id: I7b195879b677e2242ad73070fe19ad82121576a8
Diffstat (limited to 'includes/diff/TextDiffer/BaseTextDiffer.php')
-rw-r--r--includes/diff/TextDiffer/BaseTextDiffer.php16
1 files changed, 15 insertions, 1 deletions
diff --git a/includes/diff/TextDiffer/BaseTextDiffer.php b/includes/diff/TextDiffer/BaseTextDiffer.php
index 38bc23a31cb2..715a9d63ad5f 100644
--- a/includes/diff/TextDiffer/BaseTextDiffer.php
+++ b/includes/diff/TextDiffer/BaseTextDiffer.php
@@ -121,7 +121,21 @@ abstract class BaseTextDiffer implements TextDiffer {
protected function localizeLineNumbers(
$text, $reducedLineNumbers
) {
- // TODO duplicate of DifferenceEngine::localiseLineNumbers()
+ // Inline diffs.
+ $text = preg_replace_callback( '/<!-- LINES (\d+),(\d+) -->/',
+ function ( array $matches ) use ( $reducedLineNumbers ) {
+ if ( $matches[1] === '1' && $matches[2] === '1' && $reducedLineNumbers ) {
+ return '';
+ }
+ $msg = $matches[1] === $matches[2]
+ ? 'lineno'
+ : 'lineno-inline';
+ return $this->getLocalizer()->msg( $msg )
+ ->numParams( $matches[1], $matches[2] )
+ ->escaped();
+ }, $text );
+
+ // Table diffs.
return preg_replace_callback( '/<!--LINE (\d+)-->/',
function ( array $matches ) use ( $reducedLineNumbers ) {
if ( $matches[1] === '1' && $reducedLineNumbers ) {