From 315635af23761c9631ed0eb25244ba385b1b0437 Mon Sep 17 00:00:00 2001 From: kafkiansky Date: Sun, 2 Aug 2026 16:48:57 +0300 Subject: [PATCH] Fix descriptor naming --- src/Plugin/Naming.php | 7 ++++++- tests/NamingTest.php | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Plugin/Naming.php b/src/Plugin/Naming.php index f23d94e..7f96c7c 100644 --- a/src/Plugin/Naming.php +++ b/src/Plugin/Naming.php @@ -107,7 +107,7 @@ public static function descriptorName(string $file): string $info = pathinfo($file); $dir = $info['dirname'] ?? '.'; $filename = $info['filename']; - $name = Naming::pascalCase(($dir !== '.' ? (str_replace('/', ' ', $dir) . ' ') : '') . $filename); + $name = Naming::pascalCase(self::words(($dir !== '.' ? "{$dir} " : '') . $filename)); return "{$name}DescriptorRegistry"; } @@ -168,6 +168,11 @@ public static function path(string $path): string )); } + private static function words(string $name): string + { + return trim((string) preg_replace('/[^a-zA-Z0-9]+/', ' ', $name)); + } + public static function secure(string $name): string { return isset(self::CLASS_NAMES_RESERVED_WORDS[strtolower($name)]) ? "{$name}_" : $name; diff --git a/tests/NamingTest.php b/tests/NamingTest.php index d6565d1..419aa19 100644 --- a/tests/NamingTest.php +++ b/tests/NamingTest.php @@ -12,6 +12,17 @@ #[CoversClass(Naming::class)] final class NamingTest extends TestCase { + #[TestWith(['pg_query.proto', 'PgQueryDescriptorRegistry'])] + #[TestWith(['protos/queue.proto', 'ProtosQueueDescriptorRegistry'])] + #[TestWith(['.build/libpg_query/protobuf/pg_query.proto', 'BuildLibpgQueryProtobufPgQueryDescriptorRegistry'])] + #[TestWith(['./api/v1/main.proto', 'ApiV1MainDescriptorRegistry'])] + #[TestWith(['pg-query.proto', 'PgQueryDescriptorRegistry'])] + #[TestWith(['api/v1.beta/main.proto', 'ApiV1BetaMainDescriptorRegistry'])] + public function testDescriptorName(string $actual, string $expected): void + { + self::assertSame($expected, Naming::descriptorName($actual)); + } + #[TestWith(['foo', 'foo'])] #[TestWith(['foo_bar', 'fooBar'])] #[TestWith(['Foo_Bar', 'fooBar'])]