function ArrayHelper::parse
*
Return value
list<ArrayKeyValue>
2 calls to ArrayHelper::parse()
- AlphabeticallySortedByKeysSniff::process in vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Sniffs/ Arrays/ AlphabeticallySortedByKeysSniff.php - * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *
- DisallowPartiallyKeyedSniff::process in vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Sniffs/ Arrays/ DisallowPartiallyKeyedSniff.php - * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *
File
-
vendor/
slevomat/ coding-standard/ SlevomatCodingStandard/ Helpers/ ArrayHelper.php, line 23
Class
- ArrayHelper
- @internal
Namespace
SlevomatCodingStandard\HelpersCode
public static function parse(File $phpcsFile, int $arrayPointer) : array {
$tokens = $phpcsFile->getTokens();
$arrayToken = $tokens[$arrayPointer];
[
$arrayOpenerPointer,
$arrayCloserPointer,
] = self::openClosePointers($arrayToken);
$keyValues = [];
$firstPointerOnNextLine = TokenHelper::findFirstTokenOnNextLine($phpcsFile, $arrayOpenerPointer + 1);
$firstEffectivePointer = TokenHelper::findNextEffective($phpcsFile, $arrayOpenerPointer + 1);
$arrayKeyValueStartPointer = $firstPointerOnNextLine !== null && $firstPointerOnNextLine < $firstEffectivePointer ? $firstPointerOnNextLine : $firstEffectivePointer;
$arrayKeyValueEndPointer = $arrayKeyValueStartPointer;
$indentation = $tokens[$arrayOpenerPointer]['line'] < $tokens[$firstEffectivePointer]['line'] ? IndentationHelper::getIndentation($phpcsFile, $firstEffectivePointer) : '';
for ($i = $arrayKeyValueStartPointer; $i < $arrayCloserPointer; $i++) {
$token = $tokens[$i];
if (in_array($token['code'], TokenHelper::$arrayTokenCodes, true)) {
$i = self::openClosePointers($token)[1];
continue;
}
if (array_key_exists('scope_closer', $token) && $token['scope_closer'] > $i) {
$i = $token['scope_closer'] - 1;
continue;
}
if (array_key_exists('parenthesis_closer', $token) && $token['parenthesis_closer'] > $i) {
$i = $token['parenthesis_closer'] - 1;
continue;
}
$nextEffectivePointer = TokenHelper::findNextEffective($phpcsFile, $i + 1);
if ($nextEffectivePointer === $arrayCloserPointer) {
$arrayKeyValueEndPointer = self::getValueEndPointer($phpcsFile, $i, $arrayCloserPointer, $indentation);
break;
}
if ($token['code'] !== T_COMMA || !ScopeHelper::isInSameScope($phpcsFile, $arrayOpenerPointer, $i)) {
$arrayKeyValueEndPointer = $i;
continue;
}
$arrayKeyValueEndPointer = self::getValueEndPointer($phpcsFile, $i, $arrayCloserPointer, $indentation);
$keyValues[] = new ArrayKeyValue($phpcsFile, $arrayKeyValueStartPointer, $arrayKeyValueEndPointer);
$arrayKeyValueStartPointer = $arrayKeyValueEndPointer + 1;
$i = $arrayKeyValueEndPointer;
}
$keyValues[] = new ArrayKeyValue($phpcsFile, $arrayKeyValueStartPointer, $arrayKeyValueEndPointer);
return $keyValues;
}