function VersionSelector::transformVersion
1 call to VersionSelector::transformVersion()
- VersionSelector::findRecommendedRequireVersion in vendor/
composer/ composer/ src/ Composer/ Package/ Version/ VersionSelector.php - Given a concrete version, this returns a ^ constraint (when possible) that should be used, for example, in composer.json.
File
-
vendor/
composer/ composer/ src/ Composer/ Package/ Version/ VersionSelector.php, line 237
Class
- VersionSelector
- Selects the best possible version for a package
Namespace
Composer\Package\VersionCode
private function transformVersion(string $version, string $prettyVersion, string $stability) : string {
// attempt to transform 2.1.1 to 2.1
// this allows you to upgrade through minor versions
$semanticVersionParts = explode('.', $version);
// check to see if we have a semver-looking version
if (count($semanticVersionParts) === 4 && Preg::isMatch('{^\\d+\\D?}', $semanticVersionParts[3])) {
// remove the last parts (i.e. the patch version number and any extra)
if ($semanticVersionParts[0] === '0') {
unset($semanticVersionParts[3]);
}
else {
unset($semanticVersionParts[2], $semanticVersionParts[3]);
}
$version = implode('.', $semanticVersionParts);
}
else {
return $prettyVersion;
}
// append stability flag if not default
if ($stability !== 'stable') {
$version .= '@' . $stability;
}
// 2.1 -> ^2.1
return '^' . $version;
}