| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- namespace Magento\Sniffs\Less;
 
- use PHP_CodeSniffer\Sniffs\Sniff;
 
- use PHP_CodeSniffer\Files\File;
 
- /**
 
-  * Class SelectorDelimiterSniff
 
-  *
 
-  * Ensure that a line break exists after each selector delimiter.
 
-  * No spaces should be before or after delimiters.
 
-  *
 
-  * @link https://devdocs.magento.com/guides/v2.0/coding-standards/code-standard-less.html#selector-delimiters
 
-  */
 
- class SelectorDelimiterSniff implements Sniff
 
- {
 
-     /**
 
-      * A list of tokenizers this sniff supports.
 
-      *
 
-      * @var array
 
-      */
 
-     public $supportedTokenizers = [TokenizerSymbolsInterface::TOKENIZER_CSS];
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public function register()
 
-     {
 
-         return [T_COMMA];
 
-     }
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public function process(File $phpcsFile, $stackPtr)
 
-     {
 
-         $tokens = $phpcsFile->getTokens();
 
-         // Check that there's no spaces before delimiter
 
-         if ($tokens[$stackPtr - 1]['code'] === T_WHITESPACE) {
 
-             $phpcsFile->addError('Spaces should not be before delimiter', $stackPtr - 1, 'SpacesBeforeDelimiter');
 
-         }
 
-         $this->validateParenthesis($phpcsFile, $stackPtr, $tokens);
 
-     }
 
-     /**
 
-      * Parenthesis validation.
 
-      *
 
-      * @param File $phpcsFile
 
-      * @param int $stackPtr
 
-      * @param array $tokens
 
-      * @return void
 
-      */
 
-     private function validateParenthesis(File $phpcsFile, $stackPtr, array $tokens)
 
-     {
 
-         $nextPtr = $stackPtr + 1;
 
-         $nextClassPtr = $phpcsFile->findNext(T_STRING_CONCAT, $nextPtr);
 
-         $nextOpenBrace = $phpcsFile->findNext(T_OPEN_CURLY_BRACKET, $nextPtr);
 
-         if ($nextClassPtr === false || $nextOpenBrace === false) {
 
-             return;
 
-         }
 
-         $stackLine = $tokens[$stackPtr]['line'];
 
-         $nextClassLine = $tokens[$nextPtr]['line'];
 
-         $nextOpenBraceLine = $tokens[$nextOpenBrace]['line'];
 
-         // Check that each class declaration goes from new line
 
-         if (($stackLine === $nextClassLine) && ($stackLine === $nextOpenBraceLine)) {
 
-             $prevParenthesis = $phpcsFile->findPrevious(T_OPEN_PARENTHESIS, $stackPtr);
 
-             $nextParenthesis = $phpcsFile->findNext(T_OPEN_PARENTHESIS, $stackPtr);
 
-             if ((false !== $prevParenthesis) && (false !== $nextParenthesis)
 
-                 && ($tokens[$prevParenthesis]['line'] === $tokens[$stackPtr]['line'])
 
-                 && ($tokens[$nextParenthesis]['line'] === $tokens[$stackPtr]['line'])
 
-             ) {
 
-                 return;
 
-             }
 
-             $error = 'Add a line break after each selector delimiter';
 
-             $phpcsFile->addError($error, $nextOpenBrace, 'LineBreakAfterDelimiter');
 
-         }
 
-     }
 
- }
 
 
  |