Yaffs site version 1.1
[yaffs-website] / vendor / sebastian / diff / src / Parser.php
index b01511b4169e91dee3acc76b6cdaf35b05d3bfac..312c8411eefa57c283e95ade98abcd4c9acef116 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /*
- * This file is part of the Diff package.
+ * This file is part of sebastian/diff.
  *
  * (c) Sebastian Bergmann <sebastian@phpunit.de>
  *
@@ -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<file>\\S+))', $lines[$i], $fromMatch) &&
-                preg_match('(^\\+\\+\\+\\s+(?P<file>\\S+))', $lines[$i + 1], $toMatch)) {
+            if (\preg_match('(^---\\s+(?P<file>\\S+))', $lines[$i], $fromMatch) &&
+                \preg_match('(^\\+\\+\\+\\s+(?P<file>\\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<start>\d+)(?:,\s*(?P<startrange>\d+))?\s+\+(?P<end>\d+)(?:,\s*(?P<endrange>\d+))?\s+@@/', $line, $match)) {
+            if (\preg_match('/^@@\s+-(?P<start>\d+)(?:,\s*(?P<startrange>\d+))?\s+\+(?P<end>\d+)(?:,\s*(?P<endrange>\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<type>[+ -])?(?P<line>.*)/', $line, $match)) {
+            if (\preg_match('/^(?P<type>[+ -])?(?P<line>.*)/', $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);
                 }
             }