public function DiffFormatter::format in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Component/Diff/DiffFormatter.php \Drupal\Component\Diff\DiffFormatter::format()
Format a diff.
Parameters
\Drupal\Component\Diff\Diff $diff: A Diff object.
Return value
string The formatted output.
File
- core/
lib/ Drupal/ Component/ Diff/ DiffFormatter.php, line 58
Class
- DiffFormatter
- A class to format Diffs
Namespace
Drupal\Component\DiffCode
public function format(Diff $diff) {
$xi = $yi = 1;
$block = FALSE;
$context = [];
$nlead = $this->leading_context_lines;
$ntrail = $this->trailing_context_lines;
$this
->_start_diff();
foreach ($diff
->getEdits() as $edit) {
if ($edit->type == 'copy') {
if (is_array($block)) {
if (sizeof($edit->orig) <= $nlead + $ntrail) {
$block[] = $edit;
}
else {
if ($ntrail) {
$context = array_slice($edit->orig, 0, $ntrail);
$block[] = new DiffOpCopy($context);
}
$this
->_block($x0, $ntrail + $xi - $x0, $y0, $ntrail + $yi - $y0, $block);
$block = FALSE;
}
}
$context = $edit->orig;
}
else {
if (!is_array($block)) {
$context = array_slice($context, sizeof($context) - $nlead);
$x0 = $xi - sizeof($context);
$y0 = $yi - sizeof($context);
$block = [];
if ($context) {
$block[] = new DiffOpCopy($context);
}
}
$block[] = $edit;
}
if ($edit->orig) {
$xi += sizeof($edit->orig);
}
if ($edit->closing) {
$yi += sizeof($edit->closing);
}
}
if (is_array($block)) {
$this
->_block($x0, $xi - $x0, $y0, $yi - $y0, $block);
}
$end = $this
->_end_diff();
if (!empty($xi)) {
$this->line_stats['counter']['x'] += $xi;
}
if (!empty($yi)) {
$this->line_stats['counter']['y'] += $yi;
}
return $end;
}