Esempio n. 1
0
 private function getNamespaceUseDeclarations(Tokens $tokens, array $useIndexes)
 {
     $uses = array();
     foreach ($useIndexes as $index) {
         $declarationEndIndex = null;
         $tokens->getNextTokenOfKind($index, array(';'), $declarationEndIndex);
         $declarationContent = $tokens->generatePartialCode($index + 1, $declarationEndIndex - 1);
         // ignore multiple use statements like: `use BarB, BarC as C, BarD;`
         // that should be split into few separate statements
         if (false !== strpos($declarationContent, ',')) {
             continue;
         }
         $declarationParts = preg_split('/\\s+as\\s+/i', $declarationContent);
         if (1 === count($declarationParts)) {
             $fullName = $declarationContent;
             $declarationParts = explode('\\', $fullName);
             $shortName = end($declarationParts);
             $aliased = false;
         } else {
             $fullName = $declarationParts[0];
             $shortName = $declarationParts[1];
             $declarationParts = explode('\\', $fullName);
             $aliased = $shortName !== end($declarationParts);
         }
         $shortName = trim($shortName);
         $uses[$shortName] = array('shortName' => $shortName, 'fullName' => trim($fullName), 'aliased' => $aliased, 'declarationStart' => $index, 'declarationEnd' => $declarationEndIndex);
     }
     return $uses;
 }
 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(','));
     }
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 private function fixLambdas(Tokens $tokens)
 {
     for ($index = $tokens->count() - 1; 0 <= $index; --$index) {
         $token = $tokens[$index];
         if (!$token->isGivenKind(T_FUNCTION) || !$tokens->isLambda($index)) {
             continue;
         }
         $nextIndex = null;
         $tokens->getNextTokenOfKind($index, array('{'), $nextIndex);
         $tokens->ensureWhitespaceAtIndex($nextIndex - 1, 1, ' ');
     }
 }