Skip to content

Commit 0c3c930

Browse files
✨ Add Fixer
1 parent e5a8d6a commit 0c3c930

9 files changed

+600
-61
lines changed

TwigCS/Command/TwigCSCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
use Symfony\Component\Console\Output\OutputInterface;
1111
use TwigCS\Config\Config;
1212
use TwigCS\Environment\StubbedEnvironment;
13-
use TwigCS\Linter;
1413
use TwigCS\Report\TextFormatter;
1514
use TwigCS\Ruleset\Ruleset;
15+
use TwigCS\Runner\Linter;
1616
use TwigCS\Token\Tokenizer;
1717

1818
/**

TwigCS/Ruleset/Generic/BlankEOFSniff.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,45 @@
1212
class BlankEOFSniff 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::EOF_TYPE)) {
2627
$i = 0;
2728
while (isset($tokens[$tokenPosition - ($i + 1)])
2829
&& $this->isTokenMatching($tokens[$tokenPosition - ($i + 1)], Token::EOL_TYPE)
2930
) {
30-
++$i;
31+
$i++;
3132
}
3233

3334
if (1 !== $i) {
3435
// Either 0 or 2+ blank lines.
35-
$this->addMessage(
36+
$fix = $this->addFixableMessage(
3637
$this::MESSAGE_TYPE_ERROR,
3738
sprintf('A file must end with 1 blank line; found %d', $i),
3839
$token
3940
);
41+
42+
if ($fix) {
43+
if (0 === $i) {
44+
$this->fixer->addNewlineBefore($tokenPosition);
45+
} else {
46+
$this->fixer->beginChangeset();
47+
while ($i > 1) {
48+
$this->fixer->replaceToken($tokenPosition - $i, '');
49+
$i--;
50+
}
51+
$this->fixer->endChangeset();
52+
}
53+
}
4054
}
4155
}
4256

TwigCS/Ruleset/Generic/DelimiterSpacingSniff.php

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,42 +12,44 @@
1212
class 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;
@@ -69,14 +71,15 @@ public function processStart(Token $token, $tokenPosition, $tokens)
6971
}
7072

7173
/**
72-
* @param Token $token
7374
* @param int $tokenPosition
7475
* @param Token[] $tokens
7576
*
7677
* @throws Exception
7778
*/
78-
public function processEnd(Token $token, $tokenPosition, $tokens)
79+
public function processEnd(int $tokenPosition, array $tokens)
7980
{
81+
$token = $tokens[$tokenPosition];
82+
8083
// Ignore new line
8184
if ($this->isTokenMatching($tokens[$tokenPosition - 1], Token::EOL_TYPE)) {
8285
return;

TwigCS/Ruleset/Generic/DisallowCommentedCodeSniff.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@
1414
class DisallowCommentedCodeSniff extends AbstractSniff
1515
{
1616
/**
17-
* @param Token $token
1817
* @param int $tokenPosition
1918
* @param Token[] $tokens
2019
*
2120
* @return Token
2221
*
2322
* @throws Exception
2423
*/
25-
public function process(Token $token, int $tokenPosition, array $tokens)
24+
public function process(int $tokenPosition, array $tokens)
2625
{
26+
$token = $tokens[$tokenPosition];
27+
2728
if ($this->isTokenMatching($token, Token::COMMENT_START_TYPE)) {
2829
$i = $tokenPosition;
2930
$found = false;

0 commit comments

Comments
 (0)