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

Breadcrumb

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

function TxtFileLineLengthSniff::process

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

Parameters

\PHP_CodeSniffer\Files\File $phpcsFile The file being scanned.:

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

Return value

void

Overrides Sniff::process

File

vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Files/TxtFileLineLengthSniff.php, line 50

Class

TxtFileLineLengthSniff
\Drupal\Sniffs\Files\TxtFileLineLengthSniff.

Namespace

Drupal\Sniffs\Files

Code

public function process(File $phpcsFile, $stackPtr) {
    $fileExtension = strtolower(substr($phpcsFile->getFilename(), -3));
    if ($fileExtension === 'txt' || $fileExtension === '.md') {
        $tokens = $phpcsFile->getTokens();
        $content = rtrim($tokens[$stackPtr]['content']);
        $lineLength = mb_strlen($content, 'UTF-8');
        if ($lineLength > 80) {
            // Often text files contain long URLs that need to be preceded
            // with certain textual elements that are significant for
            // preserving the formatting of the document - e.g. a long link
            // in a bulleted list. If we find that the line does not contain
            // any spaces after the 40th character we'll allow it.
            if (preg_match('/\\s+/', mb_substr($content, 40)) === 0) {
                return;
            }
            // Lines without spaces are allowed to be longer.
            // Markdown allowed to be longer for lines
            // - without spaces
            // - starting with #
            // - starting with | (tables)
            // - containing a link.
            if (preg_match('/^([^ ]+$|#|\\||.*\\[.+\\]\\(.+\\))/', $content) === 0) {
                $data = [
                    80,
                    $lineLength,
                ];
                $warning = 'Line exceeds %s characters; contains %s characters';
                $phpcsFile->addWarning($warning, $stackPtr, 'TooLong', $data);
            }
        }
        
        //end if
    }
    
    //end if
}
RSS feed
Powered by Drupal