mirror of
https://github.com/codeigniter4/CodeIgniter4.git
synced 2025-02-20 11:44:28 +08:00
[Rector] Refactor UnderscoreToCamelCaseVariableNameRector so no longer require symplify/package-builder
This commit is contained in:
parent
c833671022
commit
0568464585
@ -24,8 +24,7 @@
|
||||
"phpstan/phpstan": "^0.12.91",
|
||||
"phpunit/phpunit": "^9.1",
|
||||
"predis/predis": "^1.1",
|
||||
"rector/rector": "0.11.60",
|
||||
"symplify/package-builder": "^9.3"
|
||||
"rector/rector": "0.11.60"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-fileinfo": "Improves mime type detection for files"
|
||||
|
@ -117,8 +117,6 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
||||
$parameters->set(Option::PHP_VERSION_FEATURES, PhpVersion::PHP_73);
|
||||
|
||||
$services = $containerConfigurator->services();
|
||||
$services->load('Symplify\\PackageBuilder\\', __DIR__ . '/vendor/symplify/package-builder/src');
|
||||
|
||||
$services->set(UnderscoreToCamelCaseVariableNameRector::class);
|
||||
$services->set(SimplifyUselessVariableRector::class);
|
||||
$services->set(RemoveAlwaysElseRector::class);
|
||||
|
@ -13,7 +13,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace Utils\Rector;
|
||||
|
||||
use Nette\Utils\Strings;
|
||||
use PhpParser\Comment\Doc;
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Expr\Variable;
|
||||
@ -21,8 +20,7 @@ use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PhpParser\Node\Stmt\Function_;
|
||||
use Rector\Core\Php\ReservedKeywordAnalyzer;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
use Symplify\PackageBuilder\Strings\StringFormatConverter;
|
||||
use Rector\NodeNestingScope\ParentFinder;
|
||||
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
|
||||
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
|
||||
|
||||
@ -43,16 +41,16 @@ final class UnderscoreToCamelCaseVariableNameRector extends AbstractRector
|
||||
private $reservedKeywordAnalyzer;
|
||||
|
||||
/**
|
||||
* @var StringFormatConverter
|
||||
* @var ParentFinder
|
||||
*/
|
||||
private $stringFormatConverter;
|
||||
private $parentFinder;
|
||||
|
||||
public function __construct(
|
||||
ReservedKeywordAnalyzer $reservedKeywordAnalyzer,
|
||||
StringFormatConverter $stringFormatConverter
|
||||
ParentFinder $parentFinder
|
||||
) {
|
||||
$this->reservedKeywordAnalyzer = $reservedKeywordAnalyzer;
|
||||
$this->stringFormatConverter = $stringFormatConverter;
|
||||
$this->parentFinder = $parentFinder;
|
||||
}
|
||||
|
||||
public function getRuleDefinition(): RuleDefinition
|
||||
@ -100,19 +98,20 @@ final class UnderscoreToCamelCaseVariableNameRector extends AbstractRector
|
||||
return null;
|
||||
}
|
||||
|
||||
if (! Strings::contains($nodeName, '_')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($this->reservedKeywordAnalyzer->isNativeVariable($nodeName)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($nodeName[0] === '_') {
|
||||
$underscorePosition = strpos($nodeName, '_');
|
||||
// underscore not found, or in the first char, skip
|
||||
if ($underscorePosition === false || $underscorePosition === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$camelCaseName = $this->stringFormatConverter->underscoreAndHyphenToCamelCase($nodeName);
|
||||
$replaceUnderscoreToSpace = str_replace('_', ' ', $nodeName);
|
||||
$uppercaseFirstChar = ucwords($replaceUnderscoreToSpace);
|
||||
$camelCaseName = lcfirst(str_replace(' ', '', $uppercaseFirstChar));
|
||||
|
||||
if ($camelCaseName === 'this') {
|
||||
return null;
|
||||
}
|
||||
@ -125,24 +124,13 @@ final class UnderscoreToCamelCaseVariableNameRector extends AbstractRector
|
||||
|
||||
private function updateDocblock(Variable $variable, string $variableName, string $camelCaseName): void
|
||||
{
|
||||
$parentNode = $variable->getAttribute(AttributeKey::PARENT_NODE);
|
||||
$parentClassMethodOrFunction = $this->parentFinder->findByTypes($variable, [ClassMethod::class, Function_::class]);
|
||||
|
||||
while ($parentNode) {
|
||||
/**
|
||||
* @var ClassMethod|Function_ $parentNode
|
||||
*/
|
||||
$parentNode = $parentNode->getAttribute(AttributeKey::PARENT_NODE);
|
||||
|
||||
if ($parentNode instanceof ClassMethod || $parentNode instanceof Function_) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($parentNode === null) {
|
||||
if ($parentClassMethodOrFunction === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
$docComment = $parentNode->getDocComment();
|
||||
$docComment = $parentClassMethodOrFunction->getDocComment();
|
||||
if ($docComment === null) {
|
||||
return;
|
||||
}
|
||||
@ -152,11 +140,11 @@ final class UnderscoreToCamelCaseVariableNameRector extends AbstractRector
|
||||
return;
|
||||
}
|
||||
|
||||
if (! Strings::match($docCommentText, sprintf(self::PARAM_NAME_REGEX, $variableName))) {
|
||||
if (! preg_match(sprintf(self::PARAM_NAME_REGEX, $variableName), $docCommentText)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($parentNode);
|
||||
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($parentClassMethodOrFunction);
|
||||
$paramTagValueNodes = $phpDocInfo->getParamTagValueNodes();
|
||||
|
||||
foreach ($paramTagValueNodes as $paramTagValueNode) {
|
||||
@ -166,6 +154,6 @@ final class UnderscoreToCamelCaseVariableNameRector extends AbstractRector
|
||||
}
|
||||
}
|
||||
|
||||
$parentNode->setDocComment(new Doc($phpDocInfo->getPhpDocNode()->__toString()));
|
||||
$parentClassMethodOrFunction->setDocComment(new Doc($phpDocInfo->getPhpDocNode()->__toString()));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user