/** * @param Diff $diff A Diff object. * * @return array[] List of associative arrays, each describing a difference. */ public function format($diff) { $oldline = 1; $newline = 1; $retval = []; foreach ($diff->getEdits() as $edit) { switch ($edit->getType()) { case 'add': foreach ($edit->getClosing() as $line) { $retval[] = ['action' => 'add', 'new' => $line, 'newline' => $newline++]; } break; case 'delete': foreach ($edit->getOrig() as $line) { $retval[] = ['action' => 'delete', 'old' => $line, 'oldline' => $oldline++]; } break; case 'change': foreach ($edit->getOrig() as $key => $line) { $retval[] = ['action' => 'change', 'old' => $line, 'new' => $edit->getClosing($key), 'oldline' => $oldline++, 'newline' => $newline++]; } break; case 'copy': $oldline += count($edit->getOrig()); $newline += count($edit->getOrig()); } } return $retval; }
/** * @covers Diff::getEdits */ public function testGetEdits() { $obj = new Diff([], []); $obj->edits = 'FooBarBaz'; $this->assertEquals('FooBarBaz', $obj->getEdits()); }