diff --git a/dev/src/DocFx/Node/XrefTrait.php b/dev/src/DocFx/Node/XrefTrait.php index 924eabb7dd33..7bfe0d90570d 100644 --- a/dev/src/DocFx/Node/XrefTrait.php +++ b/dev/src/DocFx/Node/XrefTrait.php @@ -17,6 +17,8 @@ namespace Google\Cloud\Dev\DocFx\Node; +use Google\Cloud\Dev\DocFx\ReservedNames; + /** * @internal */ @@ -115,6 +117,14 @@ function ($matches) { $classParts = empty($class) ? [] : explode('.', $class); + // check for reserved names + $classParts = array_map( + fn ($name) => (false === array_search( + strtolower($name), ReservedNames::RESERVED_NAMES + ) ? '' : 'PB') . $name, + $classParts + ); + if ($property) { // Convert the underscore property name to camel case getter method name $property = ltrim($property, '.'); diff --git a/dev/src/DocFx/ReservedNames.php b/dev/src/DocFx/ReservedNames.php new file mode 100644 index 000000000000..dd246dfe518d --- /dev/null +++ b/dev/src/DocFx/ReservedNames.php @@ -0,0 +1,31 @@ + 'Google\\Cloud\\AIPlatform\\V1', 'google.bigtable.admin.v2' => 'Google\\Cloud\\Bigtable\\Admin\\V2', + 'google.bigtable.v2' => 'Google\\Cloud\\Bigtable\\V2', 'google.logging.v2' => 'Google\\Cloud\\Logging\\V2', + 'google.cloud.servicedirectory.v1' => 'Google\\Cloud\\ServiceDirectory\\V1', ]; public function replace(string $description) { return $this->replaceProtoRef($description); @@ -273,6 +275,17 @@ public function provideReplaceProtoRefWithXref() . ' instance_schema_uri.' ], [ + // Reserved word used in class name + '[Namespace][google.cloud.servicedirectory.v1.Namespace]', + 'Namespace', + ], + [ + // Reserved word used in path name + '[Encoding][google.bigtable.v2.Type.String.Encoding]', + 'Encoding', + ], + [ + // Parenthesis in code samples should not be modified 'Testing that a code sample like $foo["bar"]["baz"] does not get replaced', 'Testing that a code sample like $foo["bar"]["baz"] does not get replaced' ],