public function fix(\SplFileInfo $file, Tokens $tokens)
{
static $insideCastSpaceReplaceMap = array(' ' => '', "\t" => '', "\n" => '', "\r" => '', "" => '', "\v" => '');
foreach ($tokens as $index => $token) {
if ($token->isCast()) {
$token->setContent(strtr($token->getContent(), $insideCastSpaceReplaceMap));
// force single whitespace after cast token:
if ($tokens[$index + 1]->isWhitespace(" \t")) {
// - if next token is whitespaces that contains only spaces and tabs - override next token with single space
$tokens[$index + 1]->setContent(' ');
} elseif (!$tokens[$index + 1]->isWhitespace()) {
// - if next token is not whitespaces that contains spaces, tabs and new lines - append single space to current token
$tokens->insertAt($index + 1, new Token(array(T_WHITESPACE, ' ')));
}
}
}
}