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

Breadcrumb

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

function DisallowAttributesJoiningSniff::process

* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *

Parameters

int $attributeOpenerPointer:

Overrides Sniff::process

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/Attributes/DisallowAttributesJoiningSniff.php, line 29

Class

DisallowAttributesJoiningSniff

Namespace

SlevomatCodingStandard\Sniffs\Attributes

Code

public function process(File $phpcsFile, $attributeOpenerPointer) : void {
    if (!AttributeHelper::isValidAttribute($phpcsFile, $attributeOpenerPointer)) {
        return;
    }
    $attributes = AttributeHelper::getAttributes($phpcsFile, $attributeOpenerPointer);
    $attributeCount = count($attributes);
    if ($attributeCount === 1) {
        return;
    }
    $fix = $phpcsFile->addFixableError(sprintf('%d attributes are joined.', $attributeCount), $attributeOpenerPointer, self::CODE_DISALLOWED_ATTRIBUTES_JOINING);
    if (!$fix) {
        return;
    }
    $phpcsFile->fixer
        ->beginChangeset();
    for ($i = 1; $i < count($attributes); $i++) {
        $previousAttribute = $attributes[$i - 1];
        $attribute = $attributes[$i];
        $phpcsFile->fixer
            ->addContent($previousAttribute->getEndPointer(), ']');
        for ($j = $previousAttribute->getEndPointer() + 1; $j < $attribute->getStartPointer(); $j++) {
            if ($phpcsFile->fixer
                ->getTokenContent($j) === ',') {
                $phpcsFile->fixer
                    ->replaceToken($j, '');
            }
        }
        $phpcsFile->fixer
            ->addContentBefore($attribute->getStartPointer(), '#[');
    }
    $phpcsFile->fixer
        ->endChangeset();
}
RSS feed
Powered by Drupal