/** * @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(); }
/** * @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(); }
/** * @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; }
/** * @param \PHP\Manipulator\TokenContainer\Iterator $iterator * @param boolean $forward */ protected function _nextToken(Iterator $iterator, $forward = true) { if ($forward) { $iterator->next(); } else { $iterator->previous(); } }