diff --git a/src/ReadableCaptionTrait.php b/src/ReadableCaptionTrait.php index 14d74751..b5ed489c 100644 --- a/src/ReadableCaptionTrait.php +++ b/src/ReadableCaptionTrait.php @@ -9,8 +9,7 @@ trait ReadableCaptionTrait /** * Generates human readable caption from camelCase model class name or field names. * - * This will translate 'this\\ _isNASA_MyBigBull shit_123\Foo' - * into 'This Is NASA My Big Bull Shit 123 Foo' + * This will translate 'this\ _isNASA_MyBigBull shit_123\Foo' into 'This Is NASA My Big Bull Shit 123 Foo'. */ public function readableCaption(string $s): string { @@ -21,6 +20,9 @@ public function readableCaption(string $s): string $s = array_map('trim', preg_split('~(?:^|[A-Z\d])[^A-Z\d]+\K~', $s, -1, \PREG_SPLIT_NO_EMPTY)); $s = implode(' ', $s); + // replace "Id" with "ID" + $s = preg_replace('~(?<=^| )Id~', 'ID', $s); + return $s; } } diff --git a/tests/ReadableCaptionTraitTest.php b/tests/ReadableCaptionTraitTest.php index 68e193a9..794f359b 100644 --- a/tests/ReadableCaptionTraitTest.php +++ b/tests/ReadableCaptionTraitTest.php @@ -18,7 +18,10 @@ public function testReadableCaption(): void $this->assertSame('User Defined Entity', $a->readableCaption('userDefinedEntity')); $this->assertSame('New NASA Module', $a->readableCaption('newNASA_module')); - $this->assertSame('This Is NASA My Big Bull Shit 123 Foo', $a->readableCaption('this\\ _isNASA_MyBigBull shit_123\Foo')); + $this->assertSame('This Is NASA My Big Bull Shit 123 Foo', $a->readableCaption('this\ _isNASA_MyBigBull shit_123\Foo')); + + $this->assertSame('ID', $a->readableCaption('id')); + $this->assertSame('Account ID', $a->readableCaption('account_id')); } }