Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. DiffOnlyOutputBuilder.php

function DiffOnlyOutputBuilder::getDiff

Overrides DiffOutputBuilderInterface::getDiff

File

vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php, line 33

Class

DiffOnlyOutputBuilder
Builds a diff string representation in a loose unified diff format listing only changes lines. Does not include line numbers.

Namespace

SebastianBergmann\Diff\Output

Code

public function getDiff(array $diff) : string {
    $buffer = fopen('php://memory', 'r+b');
    if ('' !== $this->header) {
        fwrite($buffer, $this->header);
        if (!str_ends_with($this->header, "\n")) {
            fwrite($buffer, "\n");
        }
    }
    foreach ($diff as $diffEntry) {
        if ($diffEntry[1] === Differ::ADDED) {
            fwrite($buffer, '+' . $diffEntry[0]);
        }
        elseif ($diffEntry[1] === Differ::REMOVED) {
            fwrite($buffer, '-' . $diffEntry[0]);
        }
        elseif ($diffEntry[1] === Differ::DIFF_LINE_END_WARNING) {
            fwrite($buffer, ' ' . $diffEntry[0]);
            continue;
            // Warnings should not be tested for line break, it will always be there
        }
        else {
            
            /* Not changed (old) 0 */
            continue;
            // we didn't write the not-changed line, so do not add a line break either
        }
        $lc = substr($diffEntry[0], -1);
        if ($lc !== "\n" && $lc !== "\r") {
            fwrite($buffer, "\n");
            // \No newline at end of file
        }
    }
    $diff = stream_get_contents($buffer, -1, 0);
    fclose($buffer);
    return $diff;
}
RSS feed
Powered by Drupal