diff options
author | MusikAnimal <musikanimal@gmail.com> | 2023-10-02 19:20:49 -0400 |
---|---|---|
committer | MusikAnimal <musikanimal@gmail.com> | 2023-10-09 22:53:14 -0400 |
commit | 02e7fdb26af4694531b3886fa80c28ad1ffea039 (patch) | |
tree | 7017d74638e481a62adc284b54a381e95e52df77 /includes/diff/TextDiffer/BaseTextDiffer.php | |
parent | 77766d44c3a394c7a9435fa0d32768b5c6620416 (diff) | |
download | mediawikicore-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.php | 16 |
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 ) { |