Mercurial > hg > isophonics-drupal-site
annotate vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 1fec387a4317 |
children |
rev | line source |
---|---|
Chris@14 | 1 <?php declare(strict_types=1); |
Chris@14 | 2 /* |
Chris@14 | 3 * This file is part of sebastian/diff. |
Chris@14 | 4 * |
Chris@14 | 5 * (c) Sebastian Bergmann <sebastian@phpunit.de> |
Chris@14 | 6 * |
Chris@14 | 7 * For the full copyright and license information, please view the LICENSE |
Chris@14 | 8 * file that was distributed with this source code. |
Chris@14 | 9 */ |
Chris@14 | 10 |
Chris@14 | 11 namespace SebastianBergmann\Diff\Output; |
Chris@14 | 12 |
Chris@14 | 13 abstract class AbstractChunkOutputBuilder implements DiffOutputBuilderInterface |
Chris@14 | 14 { |
Chris@14 | 15 /** |
Chris@14 | 16 * Takes input of the diff array and returns the common parts. |
Chris@14 | 17 * Iterates through diff line by line. |
Chris@14 | 18 * |
Chris@14 | 19 * @param array $diff |
Chris@14 | 20 * @param int $lineThreshold |
Chris@14 | 21 * |
Chris@14 | 22 * @return array |
Chris@14 | 23 */ |
Chris@14 | 24 protected function getCommonChunks(array $diff, int $lineThreshold = 5): array |
Chris@14 | 25 { |
Chris@14 | 26 $diffSize = \count($diff); |
Chris@14 | 27 $capturing = false; |
Chris@14 | 28 $chunkStart = 0; |
Chris@14 | 29 $chunkSize = 0; |
Chris@14 | 30 $commonChunks = []; |
Chris@14 | 31 |
Chris@14 | 32 for ($i = 0; $i < $diffSize; ++$i) { |
Chris@14 | 33 if ($diff[$i][1] === 0 /* OLD */) { |
Chris@14 | 34 if ($capturing === false) { |
Chris@14 | 35 $capturing = true; |
Chris@14 | 36 $chunkStart = $i; |
Chris@14 | 37 $chunkSize = 0; |
Chris@14 | 38 } else { |
Chris@14 | 39 ++$chunkSize; |
Chris@14 | 40 } |
Chris@14 | 41 } elseif ($capturing !== false) { |
Chris@14 | 42 if ($chunkSize >= $lineThreshold) { |
Chris@14 | 43 $commonChunks[$chunkStart] = $chunkStart + $chunkSize; |
Chris@14 | 44 } |
Chris@14 | 45 |
Chris@14 | 46 $capturing = false; |
Chris@14 | 47 } |
Chris@14 | 48 } |
Chris@14 | 49 |
Chris@14 | 50 if ($capturing !== false && $chunkSize >= $lineThreshold) { |
Chris@14 | 51 $commonChunks[$chunkStart] = $chunkStart + $chunkSize; |
Chris@14 | 52 } |
Chris@14 | 53 |
Chris@14 | 54 return $commonChunks; |
Chris@14 | 55 } |
Chris@14 | 56 } |