public function __construct(array $diffs, $originalFileName = '', $newFileName = '', $originalTimestamp = '', $newTimestamp = '', $contextLines = 1) { $this->diffs = $diffs; $this->originalFileName = $originalFileName; $this->newfileName = $newFileName; $this->originalTimetamp = $originalTimestamp; $this->newTimestamp = $newTimestamp; $this->contextLines = $contextLines >= 1 ? $contextLines : 1; for ($currentChunk = 0; $currentChunk < count($this->diffs); $currentChunk++) { $this->regionMap[$currentChunk] = 0; } for ($currentChunk = 0; $currentChunk < count($this->diffs); $currentChunk++) { if ($this->diffs[$currentChunk] instanceof AddDiff || $this->diffs[$currentChunk] instanceof DeleteDiff) { $this->regionMap[$currentChunk] = 1; for ($currentRegion = max($currentChunk - $this->contextLines, 0); $currentRegion < $currentChunk; $currentRegion++) { $this->regionMap[$currentRegion] = 1; } for ($currentRegion = min($currentChunk + $this->contextLines, count($this->diffs)); $currentRegion > $currentChunk; $currentRegion--) { $this->regionMap[$currentRegion] = 1; } } } $region = new Region(); for ($currentRegion = 0; $currentRegion < count($this->diffs); $currentRegion++) { if ($this->regionMap[$currentRegion] == 1) { $region->addDiff($this->diffs[$currentRegion]); } else { if (!$region->isEmpty()) { $this->regions[$this->regionsArrayPointer++] = $region; $region = new Region(); } } } if (!$region->isEmpty()) { $this->regions[$this->regionsArrayPointer++] = $region; } }