You are here

private function VersionParser::manipulateVersionString in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/composer/semver/src/VersionParser.php \Composer\Semver\VersionParser::manipulateVersionString()

Increment, decrement, or simply pad a version number.

Support function for {@link parseConstraint()}

Parameters

array $matches Array with version parts in array indexes 1,2,3,4:

int $position 1,2,3,4 - which segment of the version to increment/decrement:

int $increment:

string $pad The string to pad version parts after $position:

Return value

string The new version

1 call to VersionParser::manipulateVersionString()
VersionParser::parseConstraint in vendor/composer/semver/src/VersionParser.php

File

vendor/composer/semver/src/VersionParser.php, line 472

Class

VersionParser
Version parser.

Namespace

Composer\Semver

Code

private function manipulateVersionString($matches, $position, $increment = 0, $pad = '0') {
  for ($i = 4; $i > 0; --$i) {
    if ($i > $position) {
      $matches[$i] = $pad;
    }
    elseif ($i === $position && $increment) {
      $matches[$i] += $increment;

      // If $matches[$i] was 0, carry the decrement
      if ($matches[$i] < 0) {
        $matches[$i] = $pad;
        --$position;

        // Return null on a carry overflow
        if ($i === 1) {
          return;
        }
      }
    }
  }
  return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4];
}