From 71feff82cbc9985da7e16176cd95413e2a38583f Mon Sep 17 00:00:00 2001 From: Saki Takamachi Date: Wed, 29 Jan 2025 23:54:12 +0900 Subject: [PATCH 1/5] add support enum links --- phpdotnet/phd/Index.php | 2 +- phpdotnet/phd/Package/PHP/XHTML.php | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/phpdotnet/phd/Index.php b/phpdotnet/phd/Index.php index 39deaca6..4179d3b2 100644 --- a/phpdotnet/phd/Index.php +++ b/phpdotnet/phd/Index.php @@ -454,7 +454,7 @@ public function setMembership($membership) { public function format_reference($open, $name, $attrs, $props) { if (isset($attrs[Reader::XMLNS_DOCBOOK]['role'])) { $name = match ($attrs[Reader::XMLNS_DOCBOOK]['role']) { - "class" => "phpdoc:classref", + "class", "enum" => "phpdoc:classref", "exception" => "phpdoc:exceptionref", default => $name, }; diff --git a/phpdotnet/phd/Package/PHP/XHTML.php b/phpdotnet/phd/Package/PHP/XHTML.php index dcd9c2e5..67d3fe08 100644 --- a/phpdotnet/phd/Package/PHP/XHTML.php +++ b/phpdotnet/phd/Package/PHP/XHTML.php @@ -118,6 +118,13 @@ abstract class Package_PHP_XHTML extends Package_Generic_XHTML { 'classsynopsis' => 'format_classsynopsis_oo_name_text', ] ], + 'enumname' => [ + /* DEFAULT */ 'format_classname_text', + 'oointerface' => [ + /* DEFAULT */ 'format_classname_text', + 'classsynopsis' => 'format_classsynopsis_oo_name_text', + ] + ], 'methodname' => array( /* DEFAULT */ 'format_function_text', 'constructorsynopsis' => array( From af50d4e9b596b794da5497d645cca43441882f91 Mon Sep 17 00:00:00 2001 From: Saki Takamachi Date: Thu, 30 Jan 2025 18:05:55 +0900 Subject: [PATCH 2/5] address a comment --- phpdotnet/phd/Package/PHP/XHTML.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpdotnet/phd/Package/PHP/XHTML.php b/phpdotnet/phd/Package/PHP/XHTML.php index 67d3fe08..fe67756f 100644 --- a/phpdotnet/phd/Package/PHP/XHTML.php +++ b/phpdotnet/phd/Package/PHP/XHTML.php @@ -120,7 +120,7 @@ abstract class Package_PHP_XHTML extends Package_Generic_XHTML { ], 'enumname' => [ /* DEFAULT */ 'format_classname_text', - 'oointerface' => [ + 'ooenum' => [ /* DEFAULT */ 'format_classname_text', 'classsynopsis' => 'format_classsynopsis_oo_name_text', ] From b31954b5a57e979ea2284863af1c1122e5daa7cb Mon Sep 17 00:00:00 2001 From: Saki Takamachi Date: Fri, 31 Jan 2025 14:24:30 +0900 Subject: [PATCH 3/5] Add a test --- .../package/php/data/enum_link_rendering.xml | 26 +++++++++ tests/package/php/enum_link_rendering.phpt | 54 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 tests/package/php/data/enum_link_rendering.xml create mode 100644 tests/package/php/enum_link_rendering.phpt diff --git a/tests/package/php/data/enum_link_rendering.xml b/tests/package/php/data/enum_link_rendering.xml new file mode 100644 index 00000000..c22fe5c7 --- /dev/null +++ b/tests/package/php/data/enum_link_rendering.xml @@ -0,0 +1,26 @@ + + + +
+ 1. Existing Enum linking + Enum\Namespace\Existing_Enum + \Enum\Namespace\Existing_Enum +
+ +
+ 2. Enum linking (non-FQN) in method/function parameter and return type + + Enum\Namespace\Existing_Enummethod_name + Enum\Namespace\Existing_EnumparamName + +
+ +
+ 3. Enum linking (FQN) in method/function parameter and return type + + \Enum\Namespace\Existing_Enummethod_name + \Enum\Namespace\Existing_EnumparamName + +
+ +
diff --git a/tests/package/php/enum_link_rendering.phpt b/tests/package/php/enum_link_rendering.phpt new file mode 100644 index 00000000..1b59946b --- /dev/null +++ b/tests/package/php/enum_link_rendering.phpt @@ -0,0 +1,54 @@ +--TEST-- +Enum link rendering +--FILE-- +xmlFile = __DIR__ . "/data/enum_link_rendering.xml"; + +$format = new TestPHPChunkedXHTML($config, $outputHandler); +$format->SQLiteIndex( + null, // $context, + null, // $index, + "enum.enum-namespace-existing-enum", // $id, + "enumname.enumpage", // $filename, + "", // $parent, + "", // $sdesc, + "", // $ldesc, + "phpdoc:classref", // $element, + "", // $previous, + "", // $next, + 0, // $chunk +); + +$format->addClassname("enum.enum-namespace-existing-enum", "enum\\namespace\\existing_enum"); + +$render = new TestRender(new Reader($outputHandler), $config, $format); +$render->run(); +?> +--EXPECT-- +Filename: enum_link_rendering.html +Content: + From a3d7cd092134b5984c1c8d3ec58e1c56349b2bd1 Mon Sep 17 00:00:00 2001 From: Saki Takamachi Date: Fri, 31 Jan 2025 17:24:20 +0900 Subject: [PATCH 4/5] Supports enum links in type tags --- phpdotnet/phd/Package/PHP/XHTML.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpdotnet/phd/Package/PHP/XHTML.php b/phpdotnet/phd/Package/PHP/XHTML.php index fe67756f..d2b2c2e6 100644 --- a/phpdotnet/phd/Package/PHP/XHTML.php +++ b/phpdotnet/phd/Package/PHP/XHTML.php @@ -715,6 +715,10 @@ public function format_type_text($type, $tagname) { default: /* Check if its a classname. */ $href = Format::getFilename("class.$t"); + if (!$href) { + /* Check if its a enumname. */ + $href = Format::getFilename("enum.$t"); + } } if ($href === false) { From 99207650971cd99aec17d2de5f66f2d4f54cbc79 Mon Sep 17 00:00:00 2001 From: Saki Takamachi <34942839+SakiTakamachi@users.noreply.github.com> Date: Fri, 31 Jan 2025 17:35:25 +0900 Subject: [PATCH 5/5] typo --- phpdotnet/phd/Package/PHP/XHTML.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpdotnet/phd/Package/PHP/XHTML.php b/phpdotnet/phd/Package/PHP/XHTML.php index d2b2c2e6..18585096 100644 --- a/phpdotnet/phd/Package/PHP/XHTML.php +++ b/phpdotnet/phd/Package/PHP/XHTML.php @@ -716,7 +716,7 @@ public function format_type_text($type, $tagname) { /* Check if its a classname. */ $href = Format::getFilename("class.$t"); if (!$href) { - /* Check if its a enumname. */ + /* Check if its an enumname. */ $href = Format::getFilename("enum.$t"); } }