function Problem::condenseVersionList
Parameters
array<string|int, string> $versions an array of pretty versions, with normalized versions as keys:
Return value
list<string> a list of pretty versions and '...' where versions were removed
2 calls to Problem::condenseVersionList()
- Problem::formatDeduplicatedRules in vendor/
composer/ composer/ src/ Composer/ DependencyResolver/ Problem.php - @internal
- Problem::getPackageList in vendor/
composer/ composer/ src/ Composer/ DependencyResolver/ Problem.php - @internal
File
-
vendor/
composer/ composer/ src/ Composer/ DependencyResolver/ Problem.php, line 528
Class
- Problem
- Represents a problem detected while solving dependencies
Namespace
Composer\DependencyResolverCode
private static function condenseVersionList(array $versions, int $max, int $maxDev = 16) : array {
if (count($versions) <= $max) {
return array_values($versions);
}
$filtered = [];
$byMajor = [];
foreach ($versions as $version => $pretty) {
if (0 === stripos((string) $version, 'dev-')) {
$byMajor['dev'][] = $pretty;
}
else {
$byMajor[Preg::replace('{^(\\d+)\\..*}', '$1', (string) $version)][] = $pretty;
}
}
foreach ($byMajor as $majorVersion => $versionsForMajor) {
$maxVersions = $majorVersion === 'dev' ? $maxDev : $max;
if (count($versionsForMajor) > $maxVersions) {
// output only 1st and last versions
$filtered[] = $versionsForMajor[0];
$filtered[] = '...';
$filtered[] = $versionsForMajor[count($versionsForMajor) - 1];
}
else {
$filtered = array_merge($filtered, $versionsForMajor);
}
}
return $filtered;
}