diff options
author | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
commit | 0c8af4992cb0f7589dcafaad65ada12753c64594 (patch) | |
tree | 18e83d068c3e7dd2499331de977782b382279396 /vendor/aws/aws-sdk-php/src/EndpointV2/Rule/TreeRule.php |
initial
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/EndpointV2/Rule/TreeRule.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/EndpointV2/Rule/TreeRule.php | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/EndpointV2/Rule/TreeRule.php b/vendor/aws/aws-sdk-php/src/EndpointV2/Rule/TreeRule.php new file mode 100644 index 0000000..aa98180 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/EndpointV2/Rule/TreeRule.php @@ -0,0 +1,61 @@ +<?php + +namespace Aws\EndpointV2\Rule; + +use Aws\EndpointV2\Ruleset\RulesetStandardLibrary; + +class TreeRule extends AbstractRule +{ + /** @var array */ + private $rules; + + public function __construct(array $definition) + { + parent::__construct($definition); + $this->rules = $this->createRules($definition['rules']); + } + + /** + * @return array + */ + public function getRules() + { + return $this->rules; + } + + /** + * If a tree rule's conditions evaluate successfully, iterate over its + * subordinate rules and return a result if there is one. If any of the + * subsequent rules are trees, the function will recurse until it reaches + * an error or an endpoint rule + * + * @return mixed + */ + public function evaluate( + array $inputParameters, + RulesetStandardLibrary $standardLibrary + ) + { + if ($this->evaluateConditions($inputParameters, $standardLibrary)) { + foreach($this->rules as $rule) { + $inputParametersCopy = $inputParameters; + $evaluation = $rule->evaluate($inputParametersCopy, $standardLibrary); + if ($evaluation !== false) { + return $evaluation; + } + } + } + return false; + } + + private function createRules(array $rules) + { + $rulesList = []; + + forEach($rules as $rule) { + $ruleType = RuleCreator::create($rule['type'], $rule); + $rulesList[] = $ruleType; + } + return $rulesList; + } +} |