Пример #1
0
 protected function testToken($desired, Token $actual)
 {
     if (isset($desired['pos']) && $desired['pos'] !== $actual->pos) {
         return false;
     }
     if (isset($desired['name']) && $desired['name'] !== $actual->name) {
         return false;
     }
     if (isset($desired['rule']) && $desired['rule'] !== $actual->rule) {
         return false;
     }
     if (isset($desired['index']) && $desired['index'] !== $actual->index) {
         return false;
     }
     if (in_array('start', $desired, true) && !$actual->isStart()) {
         return false;
     }
     if (in_array('end', $desired, true) && !$actual->isEnd()) {
         return false;
     }
     return true;
 }
Пример #2
0
 public static function compare(Token $a, Token $b)
 {
     $multiplier = $a->isEnd() ? -1 : 1;
     if ($a->isStart() && $b->isEnd() || $a->isEnd() && $b->isStart()) {
         if ($a->getStart() == $b) {
             return 1;
         }
         if ($a->getEnd() == $b) {
             return -1;
         } else {
             return $multiplier;
         }
     } elseif (($rule = Helper::cmp($b->rule->priority, $a->rule->priority)) !== 0) {
         return $multiplier * $rule;
     } else {
         return $multiplier * ($a->id < $b->id ? -1 : 1);
     }
 }