/**
  * @param \PHP\Manipulator\TokenContainerIterator $iterator
  */
 protected function _setNext(TokenContainer\Iterator $iterator)
 {
     $iterator->next();
     $iterator->next();
     if ($iterator->valid()) {
         $this->_next = $iterator->current();
     } else {
         $this->_next = null;
     }
     $iterator->previous();
     $iterator->previous();
 }
示例#2
0
 /**
  * @covers \PHP\Manipulator\TokenContainer\Iterator
  */
 public function testIterator()
 {
     $container = $this->getTestContainerWithHoles();
     $iterator = new Iterator($container);
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[0], $iterator->current());
     $this->assertEquals(0, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[2], $iterator->current());
     $this->assertEquals(2, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[4], $iterator->current());
     $this->assertEquals(4, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[5], $iterator->current());
     $this->assertEquals(5, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[6], $iterator->current());
     $this->assertEquals(6, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertFalse($iterator->valid());
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[6], $iterator->current());
     $this->assertEquals(6, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[5], $iterator->current());
     $this->assertEquals(5, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[4], $iterator->current());
     $this->assertEquals(4, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[2], $iterator->current());
     $this->assertEquals(2, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[0], $iterator->current());
     $this->assertEquals(0, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertFalse($iterator->valid());
     $iterator->rewind();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[0], $iterator->current());
     $this->assertEquals(0, $iterator->key(), 'Wrong key');
 }
 /**
  * @param Iterator $iterator
  */
 protected function _moveIteratorToTargetToken(Iterator $iterator)
 {
     $iterator->previous();
 }
 /**
  * @param Iterator $iterator
  */
 protected function _moveIteratorBackFromTagetToken(Iterator $iterator)
 {
     $iterator->previous();
 }
示例#5
0
 /**
  * @param \PHP\Manipulator\TokenContainer\Iterator $iterator
  */
 protected function _seekToPhpdoc(Iterator $iterator)
 {
     $token = $iterator->current();
     // travel reverse as long as there is only whitespace and stuff
     $iterator->previous();
     while ($iterator->valid()) {
         if (!$this->isType($iterator->current(), array(T_WHITESPACE, T_PUBLIC, T_COMMENT, T_DOC_COMMENT, T_PUBLIC, T_PROTECTED, T_PRIVATE, T_STATIC))) {
             $iterator->next();
             while ($iterator->valid()) {
                 if (!$this->isType($iterator->current(), array(T_DOC_COMMENT, T_PUBLIC, T_PROTECTED, T_PRIVATE, T_STATIC, T_FUNCTION))) {
                     $iterator->next();
                 } else {
                     break;
                 }
             }
             break;
         }
         $iterator->previous();
     }
     // didn't find anything
     if (!$iterator->valid()) {
         $iterator->seekToToken($token);
     }
 }
 /**
  * @param integer|null $type
  * @param \PHP\Manipulator\TokenContainer\Iterator $iterator
  * @return boolean
  */
 protected function _isOpeningBraceAfterType($type, Iterator $iterator)
 {
     $token = $iterator->current();
     if (!$this->isOpeningCurlyBrace($token)) {
         return false;
     }
     $breakTokens = array(T_CLASS, T_FUNCTION, T_IF, T_ELSE, T_ELSEIF);
     $filterCallback = function ($tokentype) use($type) {
         return $tokentype === $type ? false : true;
     };
     $breakTokens = array_filter($breakTokens, $filterCallback);
     $result = false;
     while ($iterator->valid()) {
         $iterator->previous();
         if ($iterator->valid() === false) {
             $result = false;
             break;
         }
         $current = $iterator->current();
         if ($this->isType($current, $breakTokens)) {
             $result = false;
             break;
         }
         if ($this->isType($current, $type)) {
             $result = true;
             break;
         }
         $iterator->previous();
     }
     $iterator->seekToToken($token);
     return $result;
 }
示例#7
0
 /**
  * @param \PHP\Manipulator\TokenContainer\Iterator $iterator
  * @param boolean $forward
  */
 protected function _nextToken(Iterator $iterator, $forward = true)
 {
     if ($forward) {
         $iterator->next();
     } else {
         $iterator->previous();
     }
 }