|
1 | 1 | <?php
|
2 | 2 | namespace SplitIO\Grammar\Condition;
|
3 | 3 |
|
| 4 | +use SplitIO\Exception\UnsupportedMatcherException; |
4 | 5 | use SplitIO\Grammar\Condition\Matcher\All;
|
5 | 6 | use SplitIO\Grammar\Condition\Matcher\Between;
|
| 7 | +use SplitIO\Grammar\Condition\Matcher\BetweenSemver; |
6 | 8 | use SplitIO\Grammar\Condition\Matcher\EqualTo;
|
| 9 | +use SplitIO\Grammar\Condition\Matcher\EqualToSemver; |
7 | 10 | use SplitIO\Grammar\Condition\Matcher\GreaterThanOrEqualTo;
|
| 11 | +use SplitIO\Grammar\Condition\Matcher\GreaterThanOrEqualToSemver; |
| 12 | +use SplitIO\Grammar\Condition\Matcher\InListSemver; |
8 | 13 | use SplitIO\Grammar\Condition\Matcher\LessThanOrEqualTo;
|
| 14 | +use SplitIO\Grammar\Condition\Matcher\LessThanOrEqualToSemver; |
9 | 15 | use SplitIO\Grammar\Condition\Matcher\Segment;
|
10 | 16 | use SplitIO\Grammar\Condition\Matcher\Whitelist;
|
11 | 17 | use SplitIO\Grammar\Condition\Matcher\StartsWith;
|
@@ -39,6 +45,11 @@ class Matcher
|
39 | 45 | const IN_SPLIT_TREATMENT = 'IN_SPLIT_TREATMENT';
|
40 | 46 | const EQUAL_TO_BOOLEAN = 'EQUAL_TO_BOOLEAN';
|
41 | 47 | const MATCHES_STRING = 'MATCHES_STRING';
|
| 48 | + const EQUAL_TO_SEMVER = 'EQUAL_TO_SEMVER'; |
| 49 | + const GREATER_THAN_OR_EQUAL_TO_SEMVER = 'GREATER_THAN_OR_EQUAL_TO_SEMVER'; |
| 50 | + const LESS_THAN_OR_EQUAL_TO_SEMVER = 'LESS_THAN_OR_EQUAL_TO_SEMVER'; |
| 51 | + const BETWEEN_SEMVER = 'BETWEEN_SEMVER'; |
| 52 | + const IN_LIST_SEMVER = 'IN_LIST_SEMVER'; |
42 | 53 |
|
43 | 54 | public static function factory($matcher)
|
44 | 55 | {
|
@@ -129,9 +140,34 @@ public static function factory($matcher)
|
129 | 140 | is_string($matcher['stringMatcherData']) ?
|
130 | 141 | $matcher['stringMatcherData'] : null;
|
131 | 142 | return new Regex($data, $negate, $attribute);
|
| 143 | + case self::EQUAL_TO_SEMVER: |
| 144 | + $data = isset($matcher['stringMatcherData']) && |
| 145 | + is_string($matcher['stringMatcherData']) ? |
| 146 | + $matcher['stringMatcherData'] : null; |
| 147 | + return new EqualToSemver($data, $negate, $attribute); |
| 148 | + case self::GREATER_THAN_OR_EQUAL_TO_SEMVER: |
| 149 | + $data = isset($matcher['stringMatcherData']) && |
| 150 | + is_string($matcher['stringMatcherData']) ? |
| 151 | + $matcher['stringMatcherData'] : null; |
| 152 | + return new GreaterThanOrEqualToSemver($data, $negate, $attribute); |
| 153 | + case self::LESS_THAN_OR_EQUAL_TO_SEMVER: |
| 154 | + $data = isset($matcher['stringMatcherData']) && |
| 155 | + is_string($matcher['stringMatcherData']) ? |
| 156 | + $matcher['stringMatcherData'] : null; |
| 157 | + return new LessThanOrEqualToSemver($data, $negate, $attribute); |
| 158 | + case self::BETWEEN_SEMVER: |
| 159 | + $data = (isset($matcher['betweenStringMatcherData']) && |
| 160 | + is_array($matcher['betweenStringMatcherData'])) |
| 161 | + ? $matcher['betweenStringMatcherData'] : null; |
| 162 | + return new BetweenSemver($data, $negate, $attribute); |
| 163 | + case self::IN_LIST_SEMVER: |
| 164 | + $data = (isset($matcher['whitelistMatcherData']['whitelist']) && |
| 165 | + is_array($matcher['whitelistMatcherData']['whitelist'])) |
| 166 | + ? $matcher['whitelistMatcherData']['whitelist'] : null; |
| 167 | + return new InListSemver($data, $negate, $attribute); |
132 | 168 | // @codeCoverageIgnoreStart
|
133 | 169 | default:
|
134 |
| - return null; |
| 170 | + throw new UnsupportedMatcherException("Unable to create matcher for matcher type: " . $matcherType); |
135 | 171 | }
|
136 | 172 | // @codeCoverageIgnoreEnd
|
137 | 173 | }
|
|
0 commit comments