/** * @param Iterator $iterator * @param array $whitespace */ public function setWhitespace(Iterator $iterator, array $whitespace) { $token = $iterator->current(); $this->_moveIteratorToTargetToken($iterator); $targetToken = $iterator->current(); $tokenValue = $this->getWhitespaceForToken($token, $whitespace); $containerChanger = false; if (null !== $targetToken) { if ($this->isType($targetToken, T_WHITESPACE)) { if (empty($tokenValue)) { $this->_container->removeToken($targetToken); $containerChanger = true; } else { $targetToken->setValue($tokenValue); } } else { if (!empty($tokenValue)) { $newToken = Token::factory(array(T_WHITESPACE, $tokenValue)); $this->_insertToken($newToken, $iterator); $containerChanger = true; } } } $this->_moveIteratorBackFromTagetToken($iterator); if (true === $containerChanger) { $iterator->update($iterator->current()); } }
/** * Remove unneded ?> from the file-end * * @param \PHP\Manipulator\TokenContainer $container * @param mixed $params */ public function run(TokenContainer $container) { $stripWhitespaceFromEnd = $this->getOption('stripWhitespaceFromEnd'); $iterator = $container->getReverseIterator(); $helper = new NewlineDetector("\n"); while ($iterator->valid()) { $token = $iterator->current(); if (!$this->_isNotAllowedTag($token)) { break; } elseif ($this->isType($token, T_CLOSE_TAG)) { if ($this->evaluateConstraint('EndsWithNewline', $token)) { $newline = $helper->getNewlineFromToken($token); $token->setType(T_WHITESPACE); $token->setValue($newline); } else { $container->removeToken($token); } break; } $iterator->next(); } $container->retokenize(); if (true === $stripWhitespaceFromEnd) { $this->runAction('RemoveWhitespaceFromEnd', $container); } }
/** * Remove ErrorControlOperators (@) * * @param \PHP\Manipulator\TokenContainer $container * @param mixed $params */ public function run(TokenContainer $container) { $iterator = $container->getIterator(); while ($iterator->valid()) { $token = $iterator->current(); if ($this->evaluateConstraint('IsErrorControlOperator', $token)) { $container->removeToken($token); } $iterator->next(); } $container->retokenize(); }
/** * Remove Whitespace from the end * * @param \PHP\Manipulator\TokenContainer $container * @param mixed $params */ public function run(TokenContainer $container) { $iterator = $container->getReverseIterator(); while ($iterator->valid()) { $token = $iterator->current(); if ($this->isType($token, T_WHITESPACE)) { $container->removeToken($token); } elseif ($this->isType($token, T_INLINE_HTML)) { if ($this->evaluateConstraint('ContainsOnlyWhitespace', $token)) { $container->removeToken($token); } else { $token->setValue(rtrim($token->getValue())); break; } } else { $token->setValue(rtrim($token->getValue())); break; } $iterator->next(); } $container->retokenize(); }
/** * @covers \PHP\Manipulator\TokenContainer::removeToken */ public function testRemoveToken() { $token1 = Token::factory('Token1'); $token2 = Token::factory('Token2'); $token3 = Token::factory('Token3'); $container = new TokenContainer(); $container[] = $token1; $container[] = $token2; $container[] = $token3; $fluent = $container->removeToken($token2); $this->assertSame($fluent, $container, 'No fluent interface'); $this->assertCount(2, $container, 'Wrong count of Tokens in Container'); $this->assertTrue($container->contains($token1), 'Container contains Token1'); $this->assertTrue($container->contains($token3), 'Container contains Token3'); $this->assertFalse($container->contains($token2), 'Container not contains Token2'); }
/** * @param \PHP\Manipulator\TokenContainer $container * @param array $argumentTokens */ protected function _parseSingleArgument(array $argumentTokens, $container) { foreach ($argumentTokens as $token) { if ('=' === $token->getValue()) { break; } if ($this->isType($token, array(T_STRING, T_ARRAY, T_NS_SEPARATOR))) { $container->removeToken($token); } } }