Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ArrayHelper.php

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\Helpers

Code

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;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal