Skip to content

Commit 95e13fc

Browse files
committed
Add sorting and keying helpers to VersionData
1 parent 621b48b commit 95e13fc

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

src/Releases/VersionData.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use function array_key_last;
1111
use function array_reverse;
1212
use function get_active_branches;
13+
use function usort;
1314
use function version_compare;
1415

1516
/* have to force these files to be included */
@@ -52,6 +53,36 @@ public static function Create(string $label): VersionData
5253
return self::$_cache[$label] ?? new VersionData($label);
5354
}
5455

56+
/**
57+
* @param VersionData[] $releases
58+
* @return array<string, VersionData>
59+
*/
60+
public static function sort(array $releases, string $dir = 'asc'): array
61+
{
62+
if ($dir === 'asc') {
63+
usort($releases, fn (VersionData $a, VersionData $b) => version_compare($a->label, $b->label));
64+
} else {
65+
usort($releases, fn (VersionData $a, VersionData $b) => version_compare($b->label, $a->label));
66+
}
67+
68+
return $releases;
69+
}
70+
71+
72+
/**
73+
* @param VersionData[] $releases
74+
* @return array<string, VersionData>
75+
*/
76+
public static function rekey(array $releases): array
77+
{
78+
$out = [];
79+
foreach ($releases as $release) {
80+
$out[$release->label] = $release;
81+
}
82+
83+
return $out;
84+
}
85+
5586
/**
5687
* Returns an associative array of the latest versions of PHP
5788
*

0 commit comments

Comments
 (0)