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:
+
+
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__
+
+
+