Skip to content

Commit a0d2cc9

Browse files
committed
fix: EnumCaseToPascalCaseRector skips existing pascal case
1 parent efe86cc commit a0d2cc9

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace Rector\Tests\CodingStyle\Rector\Enum_\EnumCaseToPascalCaseRector\Fixture;
4+
5+
enum SkipExistingPascal
6+
{
7+
case Pending;
8+
case Published;
9+
case InReview;
10+
case WaitingForApproval;
11+
}

rules/CodingStyle/Rector/Enum_/EnumCaseToPascalCaseRector.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,28 @@ private function refactorClassConstFetch(ClassConstFetch $classConstFetch): ?Nod
187187

188188
private function convertToPascalCase(string $name): string
189189
{
190+
if ($this->isPascalCase($name)) {
191+
return $name;
192+
}
193+
190194
$parts = explode('_', strtolower($name));
191195
return implode('', array_map(ucfirst(...), $parts));
192196
}
197+
198+
private function isPascalCase(string $name): bool
199+
{
200+
if (! ctype_upper($name[0])) {
201+
return false;
202+
}
203+
204+
if (str_contains($name, '_')) {
205+
return false;
206+
}
207+
208+
if (strtoupper($name) === $name) {
209+
return false;
210+
}
211+
212+
return true;
213+
}
193214
}

0 commit comments

Comments
 (0)