Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. VersionSelector.php

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\Version

Code

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;
}
RSS feed
Powered by Drupal