*/ public function register(): array { return [ T_WHITESPACE, T_DOC_COMMENT_WHITESPACE, T_DOC_COMMENT_STRING, ]; } /** * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint * @param int $whitespacePointer */ public function process(File $phpcsFile, $whitespacePointer): void { $tokens = $phpcsFile->getTokens(); if ($tokens[$whitespacePointer]['column'] === 1) { return; } $content = $tokens[$whitespacePointer]['content']; if ($content === $phpcsFile->eolChar) { return; } if ($tokens[$whitespacePointer]['code'] === T_WHITESPACE) { if ($this->ignoreSpacesBeforeAssignment) { $pointerAfter = TokenHelper::findNextNonWhitespace($phpcsFile, $whitespacePointer + 1); if ( $pointerAfter !== null && in_array($tokens[$pointerAfter]['code'], Tokens::$assignmentTokens, true) ) { return; } } if ($this->ignoreSpacesInParameters) { $pointerAfter = TokenHelper::findNextNonWhitespace($phpcsFile, $whitespacePointer + 1); if ( $pointerAfter !== null && $tokens[$pointerAfter]['code'] === T_VARIABLE && ParameterHelper::isParameter($phpcsFile, $pointerAfter) ) { return; } } if ($this->ignoreSpacesInMatch) { $pointerAfter = TokenHelper::findNextNonWhitespace($phpcsFile, $whitespacePointer + 1); if ( $pointerAfter !== null && $tokens[$pointerAfter]['code'] === T_MATCH_ARROW ) { return; } } } else { if ($this->ignoreSpacesInComment) { return; } if ( $tokens[$whitespacePointer - 1]['code'] === T_DOC_COMMENT_STAR && $tokens[$whitespacePointer + 1]['code'] === T_DOC_COMMENT_STRING ) { return; } if ($this->ignoreSpacesInAnnotation) { $pointerBefore = TokenHelper::findPrevious($phpcsFile, [T_DOC_COMMENT_OPEN_TAG, T_DOC_COMMENT_TAG], $whitespacePointer - 1); if ( $pointerBefore !== null && $tokens[$pointerBefore]['code'] === T_DOC_COMMENT_TAG && $tokens[$whitespacePointer + 1]['code'] !== T_DOC_COMMENT_CLOSE_TAG ) { return; } } } $matchResult = preg_match_all('~ {2,}~', $content, $matches, PREG_OFFSET_CAPTURE); if ($matchResult === false || $matchResult === 0) { return; } $fix = false; foreach ($matches[0] as [$match, $offset]) { $position = $tokens[$whitespacePointer]['column'] + $offset; $fixable = $phpcsFile->addFixableError( sprintf('Duplicate spaces at position %d.', $position), $whitespacePointer, self::CODE_DUPLICATE_SPACES, ); if ($fixable) { $fix = true; } } if (!$fix) { return; } $phpcsFile->fixer->beginChangeset(); FixerHelper::replace($phpcsFile, $whitespacePointer, preg_replace('~ {2,}~', ' ', $content)); $phpcsFile->fixer->endChangeset(); } }