Skip to content

Commit 6bfce3b

Browse files
committed
[Rector] Refactor UnderscoreToCamelCaseVariableNameRector with latest compatible code
1 parent b967d9e commit 6bfce3b

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

utils/Rector/UnderscoreToCamelCaseVariableNameRector.php

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
namespace Utils\Rector;
66

77
use Nette\Utils\Strings;
8+
use PhpParser\Comment\Doc;
89
use PhpParser\Node;
910
use PhpParser\Node\Expr\Variable;
1011
use PhpParser\Node\Stmt\ClassMethod;
1112
use PhpParser\Node\Stmt\Function_;
12-
use Rector\BetterPhpDocParser\PhpDocManipulator\PropertyDocBlockManipulator;
1313
use Rector\Core\Php\ReservedKeywordAnalyzer;
1414
use Rector\Core\Rector\AbstractRector;
15-
use Rector\Core\Util\StaticRectorStrings;
1615
use Rector\NodeTypeResolver\Node\AttributeKey;
16+
use Symplify\PackageBuilder\Strings\StringFormatConverter;
1717
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
1818
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
1919

@@ -30,22 +30,22 @@ final class UnderscoreToCamelCaseVariableNameRector extends AbstractRector
3030
private const PARAM_NAME_REGEX = '#(?<paramPrefix>@param\s.*\s+\$)(?<paramName>%s)#ms';
3131

3232
/**
33-
* @var PropertyDocBlockManipulator
33+
* @var ReservedKeywordAnalyzer
3434
*/
35-
private $propertyDocBlockManipulator;
35+
private $reservedKeywordAnalyzer;
3636

3737
/**
38-
* @var ReservedKeywordAnalyzer
38+
* @var StringFormatConverter
3939
*/
40-
private $reservedKeywordAnalyzer;
40+
private $stringFormatConverter;
4141

4242
public function __construct(
43-
PropertyDocBlockManipulator $propertyDocBlockManipulator,
44-
ReservedKeywordAnalyzer $reservedKeywordAnalyzer
43+
ReservedKeywordAnalyzer $reservedKeywordAnalyzer,
44+
StringFormatConverter $stringFormatConverter
4545
)
4646
{
47-
$this->propertyDocBlockManipulator = $propertyDocBlockManipulator;
48-
$this->reservedKeywordAnalyzer = $reservedKeywordAnalyzer;
47+
$this->reservedKeywordAnalyzer = $reservedKeywordAnalyzer;
48+
$this->stringFormatConverter = $stringFormatConverter;
4949
}
5050

5151
public function getRuleDefinition(): RuleDefinition
@@ -109,14 +109,14 @@ public function refactor(Node $node): ?Node
109109
return null;
110110
}
111111

112-
$camelCaseName = StaticRectorStrings::underscoreToCamelCase($nodeName);
112+
$camelCaseName = $this->stringFormatConverter->underscoreAndHyphenToCamelCase($nodeName);
113113
if ($camelCaseName === 'this')
114114
{
115115
return null;
116116
}
117117

118-
$node->name = $camelCaseName;
119118
$this->updateDocblock($node, $nodeName, $camelCaseName);
119+
$node->name = $camelCaseName;
120120

121121
return $node;
122122
}
@@ -153,15 +153,22 @@ private function updateDocblock(Variable $variable, string $variableName, string
153153
return;
154154
}
155155

156-
if (! $match = Strings::match($docCommentText, sprintf(self::PARAM_NAME_REGEX, $variableName)))
156+
if (! Strings::match($docCommentText, sprintf(self::PARAM_NAME_REGEX, $variableName)))
157157
{
158158
return;
159159
}
160160

161-
$this->propertyDocBlockManipulator->renameParameterNameInDocBlock(
162-
$parentNode,
163-
$match['paramName'],
164-
$camelCaseName
165-
);
161+
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($parentNode);
162+
$paramTagValueNodes = $phpDocInfo->getParamTagValueNodes();
163+
164+
foreach ($paramTagValueNodes as $paramTagValueNode)
165+
{
166+
if ($paramTagValueNode->parameterName === '$' . $variableName)
167+
{
168+
$paramTagValueNode->parameterName = '$' . $camelCaseName;
169+
}
170+
}
171+
172+
$parentNode->setDocComment(new Doc($phpDocInfo->getPhpDocNode()->__toString()));
166173
}
167174
}

0 commit comments

Comments
 (0)