$lineCount =
count($lines);
$diffs =
[];
$diff = null;
$collected =
[];
for ($i = 0;
$i <
$lineCount; ++
$i) { if (preg_match('#^---\h+"?(?P<file>[^\\v\\t"]+)#',
$lines[$i],
$fromMatch) &&
preg_match('#^\\+\\+\\+\\h+"?(?P<file>[^\\v\\t"]+)#',
$lines[$i + 1
],
$toMatch)) { if ($diff !== null
) { $this->
parseFileDiff($diff,
$collected);
$diffs[] =
$diff;
$collected =
[];
} $diff =
new Diff($fromMatch['file'
],
$toMatch['file'
]);
++
$i;
} else { if (preg_match('/^(?:diff --git |index [\da-f\.]+|[+-]{3} [ab])/',
$lines[$i])) { continue;
}