1212class DelimiterSpacingSniff extends AbstractSniff
1313{
1414 /**
15- * @param Token $token
1615 * @param int $tokenPosition
1716 * @param Token[] $tokens
1817 *
1918 * @return Token
2019 *
2120 * @throws Exception
2221 */
23- public function process (Token $ token , int $ tokenPosition , array $ tokens )
22+ public function process (int $ tokenPosition , array $ tokens )
2423 {
24+ $ token = $ tokens [$ tokenPosition ];
25+
2526 if ($ this ->isTokenMatching ($ token , Token::VAR_START_TYPE )
2627 || $ this ->isTokenMatching ($ token , Token::BLOCK_START_TYPE )
2728 || $ this ->isTokenMatching ($ token , Token::COMMENT_START_TYPE )
2829 ) {
29- $ this ->processStart ($ token , $ tokenPosition , $ tokens );
30+ $ this ->processStart ($ tokenPosition , $ tokens );
3031 }
3132
3233 if ($ this ->isTokenMatching ($ token , Token::VAR_END_TYPE )
3334 || $ this ->isTokenMatching ($ token , Token::BLOCK_END_TYPE )
3435 || $ this ->isTokenMatching ($ token , Token::COMMENT_END_TYPE )
3536 ) {
36- $ this ->processEnd ($ token , $ tokenPosition , $ tokens );
37+ $ this ->processEnd ($ tokenPosition , $ tokens );
3738 }
3839
3940 return $ token ;
4041 }
4142
4243 /**
43- * @param Token $token
4444 * @param int $tokenPosition
4545 * @param Token[] $tokens
4646 *
4747 * @throws Exception
4848 */
49- public function processStart (Token $ token , $ tokenPosition , $ tokens )
49+ public function processStart (int $ tokenPosition , array $ tokens )
5050 {
51+ $ token = $ tokens [$ tokenPosition ];
52+
5153 // Ignore new line
5254 if ($ this ->isTokenMatching ($ tokens [$ tokenPosition + 1 ], Token::EOL_TYPE )) {
5355 return ;
@@ -60,23 +62,32 @@ public function processStart(Token $token, $tokenPosition, $tokens)
6062 }
6163
6264 if (1 !== $ count ) {
63- $ this ->addMessage (
65+ $ fix = $ this ->addFixableMessage (
6466 $ this ::MESSAGE_TYPE_ERROR ,
6567 sprintf ('Expecting 1 whitespace after "%s"; found %d ' , $ token ->getValue (), $ count ),
6668 $ token
6769 );
70+
71+ if ($ fix ) {
72+ if (0 === $ count ) {
73+ $ this ->fixer ->addContent ($ tokenPosition , ' ' );
74+ } else {
75+ $ this ->fixer ->replaceToken ($ tokenPosition + 1 , ' ' );
76+ }
77+ }
6878 }
6979 }
7080
7181 /**
72- * @param Token $token
7382 * @param int $tokenPosition
7483 * @param Token[] $tokens
7584 *
7685 * @throws Exception
7786 */
78- public function processEnd (Token $ token , $ tokenPosition , $ tokens )
87+ public function processEnd (int $ tokenPosition , array $ tokens )
7988 {
89+ $ token = $ tokens [$ tokenPosition ];
90+
8091 // Ignore new line
8192 if ($ this ->isTokenMatching ($ tokens [$ tokenPosition - 1 ], Token::EOL_TYPE )) {
8293 return ;
@@ -89,11 +100,19 @@ public function processEnd(Token $token, $tokenPosition, $tokens)
89100 }
90101
91102 if (1 !== $ count ) {
92- $ this ->addMessage (
103+ $ fix = $ this ->addFixableMessage (
93104 $ this ::MESSAGE_TYPE_ERROR ,
94105 sprintf ('Expecting 1 whitespace before "%s"; found %d ' , $ token ->getValue (), $ count ),
95106 $ token
96107 );
108+
109+ if ($ fix ) {
110+ if (0 === $ count ) {
111+ $ this ->fixer ->addContentBefore ($ tokenPosition , ' ' );
112+ } else {
113+ $ this ->fixer ->replaceToken ($ tokenPosition - 1 , ' ' );
114+ }
115+ }
97116 }
98117 }
99118}
0 commit comments