comparison vendor/phar-io/version/src/VersionConstraintValue.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents
children
comparison
equal deleted inserted replaced
13:5fb285c0d0e3 14:1fec387a4317
1 <?php
2 namespace PharIo\Version;
3
4 class VersionConstraintValue
5 {
6 /**
7 * @var VersionNumber
8 */
9 private $major;
10
11 /**
12 * @var VersionNumber
13 */
14 private $minor;
15
16 /**
17 * @var VersionNumber
18 */
19 private $patch;
20
21 /**
22 * @var string
23 */
24 private $label = '';
25
26 /**
27 * @var string
28 */
29 private $buildMetaData = '';
30
31 /**
32 * @var string
33 */
34 private $versionString = '';
35
36 /**
37 * @param string $versionString
38 */
39 public function __construct($versionString) {
40 $this->versionString = $versionString;
41
42 $this->parseVersion($versionString);
43 }
44
45 /**
46 * @param $versionString
47 */
48 private function parseVersion($versionString) {
49 $this->extractBuildMetaData($versionString);
50 $this->extractLabel($versionString);
51
52 $versionSegments = explode('.', $versionString);
53 $this->major = new VersionNumber($versionSegments[0]);
54
55 $minorValue = isset($versionSegments[1]) ? $versionSegments[1] : null;
56 $patchValue = isset($versionSegments[2]) ? $versionSegments[2] : null;
57
58 $this->minor = new VersionNumber($minorValue);
59 $this->patch = new VersionNumber($patchValue);
60 }
61
62 /**
63 * @param string $versionString
64 */
65 private function extractBuildMetaData(&$versionString) {
66 if (preg_match('/\+(.*)/', $versionString, $matches) == 1) {
67 $this->buildMetaData = $matches[1];
68 $versionString = str_replace($matches[0], '', $versionString);
69 }
70 }
71
72 /**
73 * @param string $versionString
74 */
75 private function extractLabel(&$versionString) {
76 if (preg_match('/\-(.*)/', $versionString, $matches) == 1) {
77 $this->label = $matches[1];
78 $versionString = str_replace($matches[0], '', $versionString);
79 }
80 }
81
82 /**
83 * @return string
84 */
85 public function getLabel() {
86 return $this->label;
87 }
88
89 /**
90 * @return string
91 */
92 public function getBuildMetaData() {
93 return $this->buildMetaData;
94 }
95
96 /**
97 * @return string
98 */
99 public function getVersionString() {
100 return $this->versionString;
101 }
102
103 /**
104 * @return VersionNumber
105 */
106 public function getMajor() {
107 return $this->major;
108 }
109
110 /**
111 * @return VersionNumber
112 */
113 public function getMinor() {
114 return $this->minor;
115 }
116
117 /**
118 * @return VersionNumber
119 */
120 public function getPatch() {
121 return $this->patch;
122 }
123 }