MediaWiki
REL1_35
WordAccumulator.php
Go to the documentation of this file.
1
<?php
26
namespace
MediaWiki\Diff
;
27
34
class
WordAccumulator
{
35
public
$insClass
=
' class="diffchange diffchange-inline"'
;
36
public
$delClass
=
' class="diffchange diffchange-inline"'
;
37
38
private
$lines
= [];
39
private
$line
=
''
;
40
private
$group
=
''
;
41
private
$tag
=
''
;
42
46
private
function
flushGroup
( $new_tag ) {
47
if
( $this->group !==
''
) {
48
if
( $this->tag ==
'ins'
) {
49
$this->line .=
"<ins{$this->insClass}>"
. htmlspecialchars( $this->group ) .
'</ins>'
;
50
} elseif ( $this->tag ==
'del'
) {
51
$this->line .=
"<del{$this->delClass}>"
. htmlspecialchars( $this->group ) .
'</del>'
;
52
}
else
{
53
$this->line .= htmlspecialchars( $this->group );
54
}
55
}
56
$this->group =
''
;
57
$this->tag = $new_tag;
58
}
59
63
private
function
flushLine
( $new_tag ) {
64
$this->
flushGroup
( $new_tag );
65
if
( $this->line !=
''
) {
66
array_push( $this->lines, $this->line );
67
}
else
{
68
# make empty lines visible by inserting an NBSP
69
array_push( $this->lines,
"\u{00A0}"
);
70
}
71
$this->line =
''
;
72
}
73
78
public
function
addWords
( $words,
$tag
=
''
) {
79
if
(
$tag
!= $this->tag ) {
80
$this->
flushGroup
(
$tag
);
81
}
82
83
foreach
( $words as $word ) {
84
// new-line should only come as first char of word.
85
if
( $word ==
''
) {
86
continue
;
87
}
88
if
( $word[0] ==
"\n"
) {
89
$this->
flushLine
(
$tag
);
90
$word = substr( $word, 1 );
91
}
92
// FIXME: Don't use assert()
93
// phpcs:ignore MediaWiki.Usage.ForbiddenFunctions.assert
94
assert( !strstr( $word,
"\n"
) );
95
$this->group .= $word;
96
}
97
}
98
102
public
function
getLines
() {
103
$this->
flushLine
(
'~done'
);
104
105
return
$this->lines
;
106
}
107
}
MediaWiki\Diff\WordAccumulator
Stores, escapes and formats the results of word-level diff.
Definition
WordAccumulator.php:34
MediaWiki\Diff\WordAccumulator\$insClass
$insClass
Definition
WordAccumulator.php:35
MediaWiki\Diff\WordAccumulator\$line
$line
Definition
WordAccumulator.php:39
MediaWiki\Diff\WordAccumulator\flushGroup
flushGroup( $new_tag)
Definition
WordAccumulator.php:46
MediaWiki\Diff\WordAccumulator\flushLine
flushLine( $new_tag)
Definition
WordAccumulator.php:63
MediaWiki\Diff\WordAccumulator\$delClass
$delClass
Definition
WordAccumulator.php:36
MediaWiki\Diff\WordAccumulator\$group
$group
Definition
WordAccumulator.php:40
MediaWiki\Diff\WordAccumulator\getLines
getLines()
Definition
WordAccumulator.php:102
MediaWiki\Diff\WordAccumulator\$tag
$tag
Definition
WordAccumulator.php:41
MediaWiki\Diff\WordAccumulator\addWords
addWords( $words, $tag='')
Definition
WordAccumulator.php:78
MediaWiki\Diff\WordAccumulator\$lines
$lines
Definition
WordAccumulator.php:38
MediaWiki\Diff
Definition
ComplexityException.php:22
includes
diff
WordAccumulator.php
Generated on Sat Apr 6 2024 00:07:07 for MediaWiki by
1.9.8