Esempio n. 1
0
 /**
  * Run Action
  *
  * @param \PHP\Manipulator\TokenContainer $container
  */
 public function run(TokenContainer $container)
 {
     $this->_container = $container;
     $iterator = $container->getIterator();
     $lastElse = null;
     $noOtherTokens = true;
     while ($iterator->valid()) {
         $token = $iterator->current();
         if ($this->isType($token, T_ELSE)) {
             $lastElse = $token;
             $noOtherTokens = true;
         }
         if (null !== $lastElse && !$this->_isAllowedTokenInsideEmptyElse($token)) {
             $noOtherTokens = false;
         }
         if ($this->_isEndElse($token) && true === $noOtherTokens && null !== $lastElse) {
             $start = $lastElse;
             $end = $token;
             $previous = $container->getPreviousToken($start);
             if ($this->isType($end, T_ENDIF)) {
                 $end = $container->getPreviousToken($end);
             }
             $container->removeTokensFromTo($start, $end);
             $iterator->update($previous);
             $lastElse = null;
         }
         $iterator->next();
     }
     $container->retokenize();
 }
 /**
  * @covers \PHP\Manipulator\TokenContainer::getPreviousToken
  */
 public function testGetPreviousToken()
 {
     $token1 = Token::factory('Token1');
     $token2 = Token::factory('Token2');
     $token3 = Token::factory('Token3');
     $token4 = Token::factory('Token4');
     $container = new TokenContainer();
     $container[] = $token1;
     $container[] = $token2;
     $container[] = $token3;
     $this->assertSame($token1, $container->getPreviousToken($token2), 'Wrong token');
     $this->assertSame($token2, $container->getPreviousToken($token3), 'Wrong token');
     $this->assertNull($container->getPreviousToken($token1), 'Found Token before first token');
     $this->assertNull($container->getPreviousToken($token4), 'Found Token which could not be found');
 }