You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.0 KiB
72 lines
2.0 KiB
<?php |
|
namespace PharIo\CSFixer; |
|
|
|
use PhpCsFixer\Fixer\FixerInterface; |
|
use PhpCsFixer\FixerDefinition\FixerDefinition; |
|
use PhpCsFixer\Tokenizer\Tokens; |
|
use PhpCsFixer\Tokenizer\Token; |
|
|
|
/** |
|
* Main implementation taken from kubawerlos/php-cs-fixer-customere-fixers |
|
* Copyright (c) 2018 Kuba Werłos |
|
* |
|
* Slightly modified to work without the gazillion of composer dependencies |
|
* |
|
* Original: |
|
* https://github.com/kubawerlos/php-cs-fixer-custom-fixers/blob/master/src/Fixer/PhpdocSingleLineVarFixer.php |
|
* |
|
*/ |
|
class PhpdocSingleLineVarFixer implements FixerInterface { |
|
|
|
public function getDefinition(): FixerDefinition { |
|
return new FixerDefinition( |
|
'`@var` annotation must be in single line when is the only content.', |
|
[new CodeSample('<?php |
|
/** |
|
* @var string |
|
*/ |
|
')] |
|
); |
|
} |
|
|
|
public function isCandidate(Tokens $tokens): bool { |
|
return $tokens->isTokenKindFound(T_DOC_COMMENT); |
|
} |
|
|
|
public function isRisky(): bool { |
|
return false; |
|
} |
|
|
|
public function fix(\SplFileInfo $file, Tokens $tokens): void { |
|
foreach($tokens as $index => $token) { |
|
if (!$token->isGivenKind(T_DOC_COMMENT)) { |
|
continue; |
|
} |
|
if (\stripos($token->getContent(), '@var') === false) { |
|
continue; |
|
} |
|
|
|
if (preg_match('#^/\*\*[\s\*]+(@var[^\r\n]+)[\s\*]*\*\/$#u', $token->getContent(), $matches) !== 1) { |
|
continue; |
|
} |
|
$newContent = '/** ' . \rtrim($matches[1]) . ' */'; |
|
if ($newContent === $token->getContent()) { |
|
continue; |
|
} |
|
$tokens[$index] = new Token([T_DOC_COMMENT, $newContent]); |
|
} |
|
} |
|
|
|
public function getPriority(): int { |
|
return 0; |
|
} |
|
|
|
public function getName(): string { |
|
return 'PharIo/phpdoc_single_line_var_fixer'; |
|
} |
|
|
|
public function supports(\SplFileInfo $file): bool { |
|
return true; |
|
} |
|
|
|
}
|
|
|