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

Breadcrumb

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

function RequireMultiLineTernaryOperatorSniff::process

* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint *

Parameters

int $inlineThenPointer:

Overrides Sniff::process

File

vendor/slevomat/coding-standard/SlevomatCodingStandard/Sniffs/ControlStructures/RequireMultiLineTernaryOperatorSniff.php, line 48

Class

RequireMultiLineTernaryOperatorSniff

Namespace

SlevomatCodingStandard\Sniffs\ControlStructures

Code

public function process(File $phpcsFile, $inlineThenPointer) : void {
    $this->lineLengthLimit = SniffSettingsHelper::normalizeInteger($this->lineLengthLimit);
    $this->minExpressionsLength = SniffSettingsHelper::normalizeNullableInteger($this->minExpressionsLength);
    $tokens = $phpcsFile->getTokens();
    $nextPointer = TokenHelper::findNextEffective($phpcsFile, $inlineThenPointer + 1);
    if ($tokens[$nextPointer]['code'] === T_INLINE_ELSE) {
        return;
    }
    $inlineElsePointer = TernaryOperatorHelper::getElsePointer($phpcsFile, $inlineThenPointer);
    if ($tokens[$inlineThenPointer]['line'] !== $tokens[$inlineElsePointer]['line']) {
        return;
    }
    $inlineElseEndPointer = TernaryOperatorHelper::getEndPointer($phpcsFile, $inlineThenPointer, $inlineElsePointer);
    $pointerAfterInlineElseEnd = TokenHelper::findNextEffective($phpcsFile, $inlineElseEndPointer + 1);
    if ($pointerAfterInlineElseEnd === null || $tokens[$pointerAfterInlineElseEnd]['code'] !== T_SEMICOLON) {
        return;
    }
    $endOfLineBeforeInlineThenPointer = $this->getEndOfLineBefore($phpcsFile, $inlineThenPointer);
    $actualLineLength = strlen(TokenHelper::getContent($phpcsFile, $endOfLineBeforeInlineThenPointer + 1, $pointerAfterInlineElseEnd));
    if ($actualLineLength <= $this->lineLengthLimit) {
        return;
    }
    $expressionsLength = strlen(TokenHelper::getContent($phpcsFile, $inlineThenPointer + 1, $pointerAfterInlineElseEnd - 1));
    if ($this->minExpressionsLength !== null && $this->minExpressionsLength >= $expressionsLength) {
        return;
    }
    $fix = $phpcsFile->addFixableError('Ternary operator should be reformatted to more lines.', $inlineThenPointer, self::CODE_MULTI_LINE_TERNARY_OPERATOR_NOT_USED);
    if (!$fix) {
        return;
    }
    $indentation = $this->getIndentation($phpcsFile, $endOfLineBeforeInlineThenPointer);
    $pointerBeforeInlineThen = TokenHelper::findPreviousEffective($phpcsFile, $inlineThenPointer - 1);
    $pointerBeforeInlineElse = TokenHelper::findPreviousEffective($phpcsFile, $inlineElsePointer - 1);
    $phpcsFile->fixer
        ->beginChangeset();
    FixerHelper::removeBetween($phpcsFile, $pointerBeforeInlineThen, $inlineThenPointer);
    $phpcsFile->fixer
        ->addContentBefore($inlineThenPointer, $phpcsFile->eolChar . $indentation);
    FixerHelper::removeBetween($phpcsFile, $pointerBeforeInlineElse, $inlineElsePointer);
    $phpcsFile->fixer
        ->addContentBefore($inlineElsePointer, $phpcsFile->eolChar . $indentation);
    $phpcsFile->fixer
        ->endChangeset();
}
RSS feed
Powered by Drupal