summaryrefslogtreecommitdiff
path: root/vendor/phar-io/version/src/VersionConstraintValue.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2022-03-22 12:24:31 +0300
committerAndrew Dolgov <[email protected]>2022-03-22 12:24:31 +0300
commit1c4f7ab3b838b23afb2ee4dab14acbf75956e952 (patch)
tree0a19274107d717efe92d2c0376cd3105fead5a11 /vendor/phar-io/version/src/VersionConstraintValue.php
parent711662948768492e8d05b778a7d80eacaec368d2 (diff)
* add phpunit as a dev dependency
* add some basic tests for UrlHelper::rewrite_relative() * fix UrlHelper::rewrite_relative() to work better on non-absolute relative URL paths
Diffstat (limited to 'vendor/phar-io/version/src/VersionConstraintValue.php')
-rw-r--r--vendor/phar-io/version/src/VersionConstraintValue.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/vendor/phar-io/version/src/VersionConstraintValue.php b/vendor/phar-io/version/src/VersionConstraintValue.php
new file mode 100644
index 000000000..0762e7c0e
--- /dev/null
+++ b/vendor/phar-io/version/src/VersionConstraintValue.php
@@ -0,0 +1,88 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Version;
+
+class VersionConstraintValue {
+ /** @var VersionNumber */
+ private $major;
+
+ /** @var VersionNumber */
+ private $minor;
+
+ /** @var VersionNumber */
+ private $patch;
+
+ /** @var string */
+ private $label = '';
+
+ /** @var string */
+ private $buildMetaData = '';
+
+ /** @var string */
+ private $versionString = '';
+
+ public function __construct(string $versionString) {
+ $this->versionString = $versionString;
+
+ $this->parseVersion($versionString);
+ }
+
+ public function getLabel(): string {
+ return $this->label;
+ }
+
+ public function getBuildMetaData(): string {
+ return $this->buildMetaData;
+ }
+
+ public function getVersionString(): string {
+ return $this->versionString;
+ }
+
+ public function getMajor(): VersionNumber {
+ return $this->major;
+ }
+
+ public function getMinor(): VersionNumber {
+ return $this->minor;
+ }
+
+ public function getPatch(): VersionNumber {
+ return $this->patch;
+ }
+
+ private function parseVersion(string $versionString): void {
+ $this->extractBuildMetaData($versionString);
+ $this->extractLabel($versionString);
+ $this->stripPotentialVPrefix($versionString);
+
+ $versionSegments = \explode('.', $versionString);
+ $this->major = new VersionNumber(\is_numeric($versionSegments[0]) ? (int)$versionSegments[0] : null);
+
+ $minorValue = isset($versionSegments[1]) && \is_numeric($versionSegments[1]) ? (int)$versionSegments[1] : null;
+ $patchValue = isset($versionSegments[2]) && \is_numeric($versionSegments[2]) ? (int)$versionSegments[2] : null;
+
+ $this->minor = new VersionNumber($minorValue);
+ $this->patch = new VersionNumber($patchValue);
+ }
+
+ private function extractBuildMetaData(string &$versionString): void {
+ if (\preg_match('/\+(.*)/', $versionString, $matches) === 1) {
+ $this->buildMetaData = $matches[1];
+ $versionString = \str_replace($matches[0], '', $versionString);
+ }
+ }
+
+ private function extractLabel(string &$versionString): void {
+ if (\preg_match('/-(.*)/', $versionString, $matches) === 1) {
+ $this->label = $matches[1];
+ $versionString = \str_replace($matches[0], '', $versionString);
+ }
+ }
+
+ private function stripPotentialVPrefix(string &$versionString): void {
+ if ($versionString[0] !== 'v') {
+ return;
+ }
+ $versionString = \substr($versionString, 1);
+ }
+}