X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=vendor%2Fsebastian%2Fdiff%2Fsrc%2FParser.php;h=312c8411eefa57c283e95ade98abcd4c9acef116;hb=refs%2Fheads%2Fmaster;hp=b01511b4169e91dee3acc76b6cdaf35b05d3bfac;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/vendor/sebastian/diff/src/Parser.php b/vendor/sebastian/diff/src/Parser.php index b01511b41..312c8411e 100644 --- a/vendor/sebastian/diff/src/Parser.php +++ b/vendor/sebastian/diff/src/Parser.php @@ -1,6 +1,6 @@ * @@ -22,33 +22,42 @@ class Parser */ public function parse($string) { - $lines = preg_split('(\r\n|\r|\n)', $string); - $lineCount = count($lines); + $lines = \preg_split('(\r\n|\r|\n)', $string); + + if (!empty($lines) && $lines[\count($lines) - 1] == '') { + \array_pop($lines); + } + + $lineCount = \count($lines); $diffs = array(); $diff = null; $collected = array(); for ($i = 0; $i < $lineCount; ++$i) { - if (preg_match('(^---\\s+(?P\\S+))', $lines[$i], $fromMatch) && - preg_match('(^\\+\\+\\+\\s+(?P\\S+))', $lines[$i + 1], $toMatch)) { + if (\preg_match('(^---\\s+(?P\\S+))', $lines[$i], $fromMatch) && + \preg_match('(^\\+\\+\\+\\s+(?P\\S+))', $lines[$i + 1], $toMatch)) { if ($diff !== null) { $this->parseFileDiff($diff, $collected); + $diffs[] = $diff; $collected = array(); } $diff = new Diff($fromMatch['file'], $toMatch['file']); + ++$i; } else { - if (preg_match('/^(?:diff --git |index [\da-f\.]+|[+-]{3} [ab])/', $lines[$i])) { + if (\preg_match('/^(?:diff --git |index [\da-f\.]+|[+-]{3} [ab])/', $lines[$i])) { continue; } + $collected[] = $lines[$i]; } } - if (count($collected) && ($diff !== null)) { + if ($diff !== null && \count($collected)) { $this->parseFileDiff($diff, $collected); + $diffs[] = $diff; } @@ -62,33 +71,35 @@ class Parser private function parseFileDiff(Diff $diff, array $lines) { $chunks = array(); + $chunk = null; foreach ($lines as $line) { - if (preg_match('/^@@\s+-(?P\d+)(?:,\s*(?P\d+))?\s+\+(?P\d+)(?:,\s*(?P\d+))?\s+@@/', $line, $match)) { + if (\preg_match('/^@@\s+-(?P\d+)(?:,\s*(?P\d+))?\s+\+(?P\d+)(?:,\s*(?P\d+))?\s+@@/', $line, $match)) { $chunk = new Chunk( $match['start'], - isset($match['startrange']) ? max(1, $match['startrange']) : 1, + isset($match['startrange']) ? \max(1, $match['startrange']) : 1, $match['end'], - isset($match['endrange']) ? max(1, $match['endrange']) : 1 + isset($match['endrange']) ? \max(1, $match['endrange']) : 1 ); $chunks[] = $chunk; $diffLines = array(); + continue; } - if (preg_match('/^(?P[+ -])?(?P.*)/', $line, $match)) { + if (\preg_match('/^(?P[+ -])?(?P.*)/', $line, $match)) { $type = Line::UNCHANGED; - if ($match['type'] == '+') { + if ($match['type'] === '+') { $type = Line::ADDED; - } elseif ($match['type'] == '-') { + } elseif ($match['type'] === '-') { $type = Line::REMOVED; } $diffLines[] = new Line($type, $match['line']); - if (isset($chunk)) { + if (null !== $chunk) { $chunk->setLines($diffLines); } }