From a22459f749c29bb7b814e2fad00f624b8a3271e3 Mon Sep 17 00:00:00 2001 From: haszi Date: Sun, 3 Mar 2024 16:34:16 +0100 Subject: [PATCH] Trim leading and trailing underscores in constant IDs (#106) Co-authored-by: haszi --- phpdotnet/phd/Package/Generic/XHTML.php | 14 +++++++++----- tests/package/php/constant_links_001.phpt | 16 ++++++++++++++++ tests/package/php/data/constant_links.xml | 8 ++++++++ 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/phpdotnet/phd/Package/Generic/XHTML.php b/phpdotnet/phd/Package/Generic/XHTML.php index d6aa8597..99223026 100644 --- a/phpdotnet/phd/Package/Generic/XHTML.php +++ b/phpdotnet/phd/Package/Generic/XHTML.php @@ -1612,13 +1612,17 @@ public function format_constant($open, $name, $attrs) public function format_constant_text($value, $tag) { if (str_contains($value, '::')) { // class constant - $normalizedLinkFormat = str_replace( - array("::", "\\", "_"), - array(".constants.", "-", "-"), - strtolower($value) + list($extensionAndClass, $constant) = explode( + "::", + str_replace( + array("\\", "_"), + array("-", "-"), + strtolower($value) + ) ); + $normalizedLinkFormat = $extensionAndClass . ".constants." . trim($constant, "-"); } else { - $normalizedLinkFormat = 'constant.' . str_replace('_', '-', strtolower($value)); + $normalizedLinkFormat = 'constant.' . str_replace('_', '-', strtolower(trim($value, "_"))); } $link = $this->createLink($normalizedLinkFormat); diff --git a/tests/package/php/constant_links_001.phpt b/tests/package/php/constant_links_001.phpt index 6e40f8b9..93380ad2 100644 --- a/tests/package/php/constant_links_001.phpt +++ b/tests/package/php/constant_links_001.phpt @@ -19,6 +19,14 @@ $indices = [ "docbook_id" => "vendor-namespace.constants.definitely-exists2", "filename" => "extensionname2.constantspage2", ], + [ + "docbook_id" => "constant.leading-and-trailing-undescores", + "filename" => "extensionname3.constantspage3", + ], + [ + "docbook_id" => "extension-class.constants.leading-and-trailing-undescores2", + "filename" => "extensionname4.constantspage4", + ], ]; $format = new TestPHPChunkedXHTML; @@ -64,4 +72,12 @@ Content:

+
+

%d. Constant with leading and trailing underscores in ID

+ __LEADING_AND_TRAILING_UNDESCORES__ +

+ Extension\Class::__LEADING_AND_TRAILING_UNDESCORES2__ +

+
+ diff --git a/tests/package/php/data/constant_links.xml b/tests/package/php/data/constant_links.xml index 8609dab7..e5c9c643 100644 --- a/tests/package/php/data/constant_links.xml +++ b/tests/package/php/data/constant_links.xml @@ -17,4 +17,12 @@ +
+ 3. Constant with leading and trailing underscores in ID + __LEADING_AND_TRAILING_UNDESCORES__ + + Extension\Class::__LEADING_AND_TRAILING_UNDESCORES2__ + +
+