The `sortCellReferenceArray()` in `Coordinate` should have returned cells ordered by row, then by column... but instead sorted by column, then row.
Fixed that bug, using a slightly faster algorithm for the sort index than the simple fix would have used, and modified the tests that didn't have the correct expected result :-(
This commit is contained in:
parent
1924f3c1d7
commit
0171709e7f
|
|
@ -353,9 +353,8 @@ abstract class Coordinate
|
||||||
}
|
}
|
||||||
|
|
||||||
$cellList = array_merge(...$cells);
|
$cellList = array_merge(...$cells);
|
||||||
$cellList = self::sortCellReferenceArray($cellList);
|
|
||||||
|
|
||||||
return $cellList;
|
return self::sortCellReferenceArray($cellList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function processRangeSetOperators(array $operators, array $cells): array
|
private static function processRangeSetOperators(array $operators, array $cells): array
|
||||||
|
|
@ -382,9 +381,10 @@ abstract class Coordinate
|
||||||
{
|
{
|
||||||
// Sort the result by column and row
|
// Sort the result by column and row
|
||||||
$sortKeys = [];
|
$sortKeys = [];
|
||||||
foreach ($cellList as $coord) {
|
foreach ($cellList as $coordinate) {
|
||||||
sscanf($coord, '%[A-Z]%d', $column, $row);
|
sscanf($coordinate, '%[A-Z]%d', $column, $row);
|
||||||
$sortKeys[sprintf('%3s%09d', $column, $row)] = $coord;
|
$key = (--$row * 16384) + self::columnIndexFromString($column);
|
||||||
|
$sortKeys[$key] = $coordinate;
|
||||||
}
|
}
|
||||||
ksort($sortKeys);
|
ksort($sortKeys);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,10 @@ return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
'B4',
|
'B4',
|
||||||
'B5',
|
|
||||||
'B6',
|
|
||||||
'D4',
|
'D4',
|
||||||
|
'B5',
|
||||||
'D5',
|
'D5',
|
||||||
|
'B6',
|
||||||
'D6',
|
'D6',
|
||||||
],
|
],
|
||||||
'B4:B6,D4:D6',
|
'B4:B6,D4:D6',
|
||||||
|
|
@ -28,13 +28,13 @@ return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
'B4',
|
'B4',
|
||||||
'B5',
|
|
||||||
'B6',
|
|
||||||
'C4',
|
'C4',
|
||||||
'C5',
|
|
||||||
'C6',
|
|
||||||
'D4',
|
'D4',
|
||||||
|
'B5',
|
||||||
|
'C5',
|
||||||
'D5',
|
'D5',
|
||||||
|
'B6',
|
||||||
|
'C6',
|
||||||
'D6',
|
'D6',
|
||||||
],
|
],
|
||||||
'B4:D6',
|
'B4:D6',
|
||||||
|
|
@ -42,18 +42,18 @@ return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
'B4',
|
'B4',
|
||||||
'B5',
|
|
||||||
'B6',
|
|
||||||
'C4',
|
'C4',
|
||||||
'C5',
|
|
||||||
'C6',
|
|
||||||
'C7',
|
|
||||||
'D4',
|
'D4',
|
||||||
|
'B5',
|
||||||
|
'C5',
|
||||||
'D5',
|
'D5',
|
||||||
'D6',
|
|
||||||
'D7',
|
|
||||||
'E5',
|
'E5',
|
||||||
|
'B6',
|
||||||
|
'C6',
|
||||||
|
'D6',
|
||||||
'E6',
|
'E6',
|
||||||
|
'C7',
|
||||||
|
'D7',
|
||||||
'E7',
|
'E7',
|
||||||
],
|
],
|
||||||
'B4:D6,C5:E7',
|
'B4:D6,C5:E7',
|
||||||
|
|
@ -61,8 +61,8 @@ return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
'C5',
|
'C5',
|
||||||
'C6',
|
|
||||||
'D5',
|
'D5',
|
||||||
|
'C6',
|
||||||
'D6',
|
'D6',
|
||||||
],
|
],
|
||||||
'B4:D6 C5:E7',
|
'B4:D6 C5:E7',
|
||||||
|
|
@ -70,23 +70,23 @@ return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
'B2',
|
'B2',
|
||||||
'B3',
|
|
||||||
'B4',
|
|
||||||
'C2',
|
'C2',
|
||||||
'C3',
|
|
||||||
'C4',
|
|
||||||
'C5',
|
|
||||||
'D2',
|
'D2',
|
||||||
|
'B3',
|
||||||
|
'C3',
|
||||||
'D3',
|
'D3',
|
||||||
'D4',
|
|
||||||
'D5',
|
|
||||||
'D6',
|
|
||||||
'E3',
|
'E3',
|
||||||
|
'B4',
|
||||||
|
'C4',
|
||||||
|
'D4',
|
||||||
'E4',
|
'E4',
|
||||||
'E5',
|
|
||||||
'E6',
|
|
||||||
'F4',
|
'F4',
|
||||||
|
'C5',
|
||||||
|
'D5',
|
||||||
|
'E5',
|
||||||
'F5',
|
'F5',
|
||||||
|
'D6',
|
||||||
|
'E6',
|
||||||
'F6',
|
'F6',
|
||||||
],
|
],
|
||||||
'B2:D4,C5:D5,E3:E5,D6:E6,F4:F6',
|
'B2:D4,C5:D5,E3:E5,D6:E6,F4:F6',
|
||||||
|
|
@ -94,23 +94,23 @@ return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
'B2',
|
'B2',
|
||||||
'B3',
|
|
||||||
'B4',
|
|
||||||
'C2',
|
'C2',
|
||||||
'C3',
|
|
||||||
'C4',
|
|
||||||
'C5',
|
|
||||||
'D2',
|
'D2',
|
||||||
|
'B3',
|
||||||
|
'C3',
|
||||||
'D3',
|
'D3',
|
||||||
'D4',
|
|
||||||
'D5',
|
|
||||||
'D6',
|
|
||||||
'E3',
|
'E3',
|
||||||
|
'B4',
|
||||||
|
'C4',
|
||||||
|
'D4',
|
||||||
'E4',
|
'E4',
|
||||||
'E5',
|
|
||||||
'E6',
|
|
||||||
'F4',
|
'F4',
|
||||||
|
'C5',
|
||||||
|
'D5',
|
||||||
|
'E5',
|
||||||
'F5',
|
'F5',
|
||||||
|
'D6',
|
||||||
|
'E6',
|
||||||
'F6',
|
'F6',
|
||||||
],
|
],
|
||||||
'B2:D4,C3:E5,D4:F6',
|
'B2:D4,C3:E5,D4:F6',
|
||||||
|
|
@ -124,8 +124,8 @@ return [
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
'Z2',
|
'Z2',
|
||||||
'Z3',
|
|
||||||
'AA2',
|
'AA2',
|
||||||
|
'Z3',
|
||||||
'AA3',
|
'AA3',
|
||||||
],
|
],
|
||||||
'Z2:AA3',
|
'Z2:AA3',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue