private function getNewOrder(array $uses, Tokens $tokens) { $uses = array_reverse($uses); $indexes = array(); $originalIndexes = array(); foreach ($uses as $index) { $tokens->getNextTokenOfKind($index, array(';'), $endIndex); $tokens->getTokenNotOfKindSibling($index + 1, 1, array(array(T_WHITESPACE)), $startIndex); $namespace = ''; $index = $startIndex; while ($index <= $endIndex) { $token = $tokens[$index]; /** @var Token $token */ if (',' === $token->content || $index === $endIndex) { $indexes[$startIndex] = array($namespace, $startIndex, $index - 1); $originalIndexes[] = $startIndex; $namespace = ''; $nextPartIndex = $endIndex; $tokens->getTokenNotOfKindSibling($index, 1, array(array(','), array(T_WHITESPACE)), $nextPartIndex); $startIndex = $nextPartIndex; $index = $nextPartIndex; continue; } $namespace .= $token->content; ++$index; } } uasort($indexes, 'self::sortingCallBack'); $i = -1; $usesOrder = array(); // Loop trough the index but use original index order foreach ($indexes as $v) { $usesOrder[$originalIndexes[++$i]] = $v; } return $usesOrder; }
private function fixArray(Tokens $tokens, $index) { $bracesLevel = 0; $startIndex = $index; if ($tokens[$index]->isGivenKind(T_ARRAY)) { $tokens->getNextTokenOfKind($index, array('(', '['), $startIndex); } if (!$tokens->isArrayMultiLine($index)) { return; } if ($tokens[$startIndex]->equals('(')) { $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $startIndex); } else { $endIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_SQUARE_BRACE, $startIndex); } $beforeEndIndex = null; $beforeEndToken = $tokens->getTokenNotOfKindSibling($endIndex, -1, array(array(T_WHITESPACE), array(T_COMMENT), array(T_DOC_COMMENT)), $beforeEndIndex); // if there is some item between braces then add `,` after it if ($startIndex !== $beforeEndIndex && !$beforeEndToken->equals(',')) { $tokens->insertAt($beforeEndIndex + 1, new Token(',')); } }