Mercurial > hg > rc1
comparison vendor/composer/semver/src/Constraint/MultiConstraint.php @ 0:1e000243b222
vanilla 1.3.3 distro, I hope
author | Charlie Root |
---|---|
date | Thu, 04 Jan 2018 15:50:29 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1e000243b222 |
---|---|
1 <?php | |
2 | |
3 /* | |
4 * This file is part of composer/semver. | |
5 * | |
6 * (c) Composer <https://github.com/composer> | |
7 * | |
8 * For the full copyright and license information, please view | |
9 * the LICENSE file that was distributed with this source code. | |
10 */ | |
11 | |
12 namespace Composer\Semver\Constraint; | |
13 | |
14 /** | |
15 * Defines a conjunctive or disjunctive set of constraints. | |
16 */ | |
17 class MultiConstraint implements ConstraintInterface | |
18 { | |
19 /** @var ConstraintInterface[] */ | |
20 protected $constraints; | |
21 | |
22 /** @var string */ | |
23 protected $prettyString; | |
24 | |
25 /** @var bool */ | |
26 protected $conjunctive; | |
27 | |
28 /** | |
29 * @param ConstraintInterface[] $constraints A set of constraints | |
30 * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive | |
31 */ | |
32 public function __construct(array $constraints, $conjunctive = true) | |
33 { | |
34 $this->constraints = $constraints; | |
35 $this->conjunctive = $conjunctive; | |
36 } | |
37 | |
38 /** | |
39 * @return ConstraintInterface[] | |
40 */ | |
41 public function getConstraints() | |
42 { | |
43 return $this->constraints; | |
44 } | |
45 | |
46 /** | |
47 * @return bool | |
48 */ | |
49 public function isConjunctive() | |
50 { | |
51 return $this->conjunctive; | |
52 } | |
53 | |
54 /** | |
55 * @return bool | |
56 */ | |
57 public function isDisjunctive() | |
58 { | |
59 return !$this->conjunctive; | |
60 } | |
61 | |
62 /** | |
63 * @param ConstraintInterface $provider | |
64 * | |
65 * @return bool | |
66 */ | |
67 public function matches(ConstraintInterface $provider) | |
68 { | |
69 if (false === $this->conjunctive) { | |
70 foreach ($this->constraints as $constraint) { | |
71 if ($constraint->matches($provider)) { | |
72 return true; | |
73 } | |
74 } | |
75 | |
76 return false; | |
77 } | |
78 | |
79 foreach ($this->constraints as $constraint) { | |
80 if (!$constraint->matches($provider)) { | |
81 return false; | |
82 } | |
83 } | |
84 | |
85 return true; | |
86 } | |
87 | |
88 /** | |
89 * @param string $prettyString | |
90 */ | |
91 public function setPrettyString($prettyString) | |
92 { | |
93 $this->prettyString = $prettyString; | |
94 } | |
95 | |
96 /** | |
97 * @return string | |
98 */ | |
99 public function getPrettyString() | |
100 { | |
101 if ($this->prettyString) { | |
102 return $this->prettyString; | |
103 } | |
104 | |
105 return $this->__toString(); | |
106 } | |
107 | |
108 /** | |
109 * @return string | |
110 */ | |
111 public function __toString() | |
112 { | |
113 $constraints = array(); | |
114 foreach ($this->constraints as $constraint) { | |
115 $constraints[] = (string) $constraint; | |
116 } | |
117 | |
118 return '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; | |
119 } | |
120 } |