@@ -12,6 +12,10 @@ final class ConditionFactory
1212{
1313 public function create (array $ conditions ): ConditionInterface
1414 {
15+ if (array_key_exists ('attribute ' , $ conditions )) {
16+ return $ this ->createCondition ($ conditions );
17+ }
18+
1519 $ mappedConditions = array_map (fn ($ condition ) => $ this ->map ($ condition ), $ conditions );
1620
1721 if (count ($ mappedConditions ) === 1 ) {
@@ -44,13 +48,12 @@ private function map(array $condition): ConditionInterface
4448
4549 private function createCondition (array $ condition ): ConditionInterface
4650 {
47- if (!isset ($ condition ['attribute ' ]) || !isset ($ condition ['operator ' ]) || !isset ($ condition ['value ' ])) {
48- var_dump ($ condition );
51+ if (!isset ($ condition ['attribute ' ]) || !isset ($ condition ['operator ' ])) {
4952 throw new InvalidArgumentException ('Invalid condition format ' );
5053 }
5154
5255 $ attribute = $ condition ['attribute ' ];
53- $ value = $ condition ['value ' ];
56+ $ value = $ condition ['value ' ] ?? null ;
5457
5558 switch ($ condition ['operator ' ]) {
5659 case 'after ' :
@@ -88,9 +91,13 @@ private function createCondition(array $condition): ConditionInterface
8891 case 'lessThanOrEquals ' :
8992 return new LessThanOrEqualsCondition ($ attribute , $ value );
9093 case 'matches ' :
91- return new MatchesCondition ($ attribute , sprintf ('/%s/%s ' , $ value , $ condition ['regexFlags ' ]));
94+ return new MatchesCondition ($ attribute , sprintf ('/%s/%s ' , $ value , $ condition ['regexFlags ' ] ?? '' ));
95+ case 'notMatches ' :
96+ return new NotCondition (new MatchesCondition ($ attribute , sprintf ('/%s/%s ' , $ value , $ condition ['regexFlags ' ] ?? '' )));
9297 case 'semverEquals ' :
9398 return new SemverEqualsCondition ($ attribute , $ value );
99+ case 'semverNotEquals ' :
100+ return new NotCondition (new SemverEqualsCondition ($ attribute , $ value ));
94101 case 'semverGreaterThan ' :
95102 return new SemverGreaterThanCondition ($ attribute , $ value );
96103 case 'semverGreaterThanOrEquals ' :
0 commit comments