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