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

Breadcrumb

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

function ScopeIndentSniff::adjustIndent

Same name in this branch
  1. 11.1.x vendor/squizlabs/php_codesniffer/src/Standards/Generic/Sniffs/WhiteSpace/ScopeIndentSniff.php \PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\ScopeIndentSniff::adjustIndent()

Processes this test, when one of its tokens is encountered.

Parameters

\PHP_CodeSniffer\Files\File $phpcsFile All the tokens found in the document.:

int $stackPtr The position of the current token: in the stack passed in $tokens.

int $length The length of the new indent.:

int $change The difference in length between: the old and new indent.

Return value

bool

1 call to ScopeIndentSniff::adjustIndent()
ScopeIndentSniff::process in vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php
Processes this test, when one of its tokens is encountered.

File

vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/WhiteSpace/ScopeIndentSniff.php, line 1483

Class

ScopeIndentSniff
Largely copied from \PHP_CodeSniffer\Standards\Generic\Sniffs\WhiteSpace\ScopeIndentSniff, modified to make the exact mode working with comments and multi line statements.

Namespace

Drupal\Sniffs\WhiteSpace

Code

protected function adjustIndent(File $phpcsFile, $stackPtr, $length, $change) {
    $tokens = $phpcsFile->getTokens();
    // We don't adjust indents outside of PHP.
    if ($tokens[$stackPtr]['code'] === T_INLINE_HTML) {
        return false;
    }
    $padding = '';
    if ($length > 0) {
        if ($this->tabIndent === true) {
            $numTabs = (int) floor($length / $this->tabWidth);
            if ($numTabs > 0) {
                $numSpaces = $length - $numTabs * $this->tabWidth;
                $padding = str_repeat("\t", $numTabs) . str_repeat(' ', $numSpaces);
            }
        }
        else {
            $padding = str_repeat(' ', $length);
        }
    }
    if ($tokens[$stackPtr]['column'] === 1) {
        $trimmed = ltrim($tokens[$stackPtr]['content']);
        $accepted = $phpcsFile->fixer
            ->replaceToken($stackPtr, $padding . $trimmed);
    }
    else {
        // Easier to just replace the entire indent.
        $accepted = $phpcsFile->fixer
            ->replaceToken($stackPtr - 1, $padding);
    }
    if ($accepted === false) {
        return false;
    }
    if ($tokens[$stackPtr]['code'] === T_DOC_COMMENT_OPEN_TAG) {
        // We adjusted the start of a comment, so adjust the rest of it
        // as well so the alignment remains correct.
        for ($x = $stackPtr + 1; $x < $tokens[$stackPtr]['comment_closer']; $x++) {
            if ($tokens[$x]['column'] !== 1) {
                continue;
            }
            $length = 0;
            if ($tokens[$x]['code'] === T_DOC_COMMENT_WHITESPACE) {
                $length = $tokens[$x]['length'];
            }
            $padding = $length + $change;
            if ($padding > 0) {
                if ($this->tabIndent === true) {
                    $numTabs = (int) floor($padding / $this->tabWidth);
                    $numSpaces = $padding - $numTabs * $this->tabWidth;
                    $padding = str_repeat("\t", $numTabs) . str_repeat(' ', $numSpaces);
                }
                else {
                    $padding = str_repeat(' ', $padding);
                }
            }
            else {
                $padding = '';
            }
            $phpcsFile->fixer
                ->replaceToken($x, $padding);
            if ($this->debug === true) {
                $length = strlen($padding);
                $line = $tokens[$x]['line'];
                $type = $tokens[$x]['type'];
                echo "\t=> Indent adjusted to {$length} for {$type} on line {$line}" . PHP_EOL;
            }
        }
        
        //end for
    }
    
    //end if
    return true;
}

API Navigation

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