/**
  * {@inheritdoc}
  */
 public function match(TokenInterface $token)
 {
     $rules = new \SplObjectStorage();
     /** @var RuleInterface $rule */
     foreach ($this->repository->getNonIndexableRules() as $rule) {
         /** @var ConditionInterface $condition */
         foreach ($rule->getConditions() as $condition) {
             /** @var EvaluatorInterface $evaluator */
             $evaluator = $this->resolver->resolve($condition);
             $evaluator->evaluate($token, $condition, $rule) ? $rules->attach($rule) : $rules->detach($rule);
         }
     }
     return $rules;
 }
 /**
  * @param string $path
  * @return PHPRepository
  */
 private function createRepository($path)
 {
     if (is_null($this->repository)) {
         $this->repository = new PHPRepository();
         $this->repository->setFilePath($path);
     }
     return $this->repository;
 }
Beispiel #3
0
 /**
  * {@inheritdoc}
  */
 public function find(UserAgentTokenizedToken $token)
 {
     $nodes = $token->getData();
     $rules = $this->repository->getIndexableRulesByUserAgentToken($token);
     $occurences = new Occurrences();
     /** @var RuleInterface $rule */
     foreach ($rules as $rule) {
         /** @var NodeInterface $node */
         foreach ($nodes as $node) {
             $conditions = $rule->getConditions();
             $conditions->rewind();
             /** @var ConditionInterface $condition */
             foreach ($conditions as $condition) {
                 if ($this->comparer->areEquals($node, $condition)) {
                     $occurences->add(new Occurrence($rule, $condition, $node));
                 }
             }
         }
     }
     return $occurences;
 }