Skip to content

Commit 3c00a1a

Browse files
Add support enum links (#188)
1 parent b4c4bf8 commit 3c00a1a

File tree

4 files changed

+92
-1
lines changed

4 files changed

+92
-1
lines changed

phpdotnet/phd/Index.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ public function setMembership($membership) {
454454
public function format_reference($open, $name, $attrs, $props) {
455455
if (isset($attrs[Reader::XMLNS_DOCBOOK]['role'])) {
456456
$name = match ($attrs[Reader::XMLNS_DOCBOOK]['role']) {
457-
"class" => "phpdoc:classref",
457+
"class", "enum" => "phpdoc:classref",
458458
"exception" => "phpdoc:exceptionref",
459459
default => $name,
460460
};

phpdotnet/phd/Package/PHP/XHTML.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@ abstract class Package_PHP_XHTML extends Package_Generic_XHTML {
118118
'classsynopsis' => 'format_classsynopsis_oo_name_text',
119119
]
120120
],
121+
'enumname' => [
122+
/* DEFAULT */ 'format_classname_text',
123+
'ooenum' => [
124+
/* DEFAULT */ 'format_classname_text',
125+
'classsynopsis' => 'format_classsynopsis_oo_name_text',
126+
]
127+
],
121128
'methodname' => array(
122129
/* DEFAULT */ 'format_function_text',
123130
'constructorsynopsis' => array(
@@ -708,6 +715,10 @@ public function format_type_text($type, $tagname) {
708715
default:
709716
/* Check if its a classname. */
710717
$href = Format::getFilename("class.$t");
718+
if (!$href) {
719+
/* Check if its an enumname. */
720+
$href = Format::getFilename("enum.$t");
721+
}
711722
}
712723

713724
if ($href === false) {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<chapter xml:id="enum_link_rendering" xmlns="http://docbook.org/ns/docbook">
3+
4+
<section>
5+
<para>1. Existing Enum linking</para>
6+
<enumname>Enum\Namespace\Existing_Enum</enumname>
7+
<enumname>\Enum\Namespace\Existing_Enum</enumname>
8+
</section>
9+
10+
<section>
11+
<para>2. Enum linking (non-FQN) in method/function parameter and return type</para>
12+
<methodsynopsis>
13+
<type>Enum\Namespace\Existing_Enum</type><methodname>method_name</methodname>
14+
<methodparam><type>Enum\Namespace\Existing_Enum</type><parameter>paramName</parameter></methodparam>
15+
</methodsynopsis>
16+
</section>
17+
18+
<section>
19+
<para>3. Enum linking (FQN) in method/function parameter and return type</para>
20+
<methodsynopsis>
21+
<type>\Enum\Namespace\Existing_Enum</type><methodname>method_name</methodname>
22+
<methodparam><type>\Enum\Namespace\Existing_Enum</type><parameter>paramName</parameter></methodparam>
23+
</methodsynopsis>
24+
</section>
25+
26+
</chapter>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
--TEST--
2+
Enum link rendering
3+
--FILE--
4+
<?php
5+
namespace phpdotnet\phd;
6+
7+
require_once __DIR__ . "/../../setup.php";
8+
9+
$config->xmlFile = __DIR__ . "/data/enum_link_rendering.xml";
10+
11+
$format = new TestPHPChunkedXHTML($config, $outputHandler);
12+
$format->SQLiteIndex(
13+
null, // $context,
14+
null, // $index,
15+
"enum.enum-namespace-existing-enum", // $id,
16+
"enumname.enumpage", // $filename,
17+
"", // $parent,
18+
"", // $sdesc,
19+
"", // $ldesc,
20+
"phpdoc:classref", // $element,
21+
"", // $previous,
22+
"", // $next,
23+
0, // $chunk
24+
);
25+
26+
$format->addClassname("enum.enum-namespace-existing-enum", "enum\\namespace\\existing_enum");
27+
28+
$render = new TestRender(new Reader($outputHandler), $config, $format);
29+
$render->run();
30+
?>
31+
--EXPECT--
32+
Filename: enum_link_rendering.html
33+
Content:
34+
<div id="enum_link_rendering" class="chapter">
35+
36+
<div class="section">
37+
<p class="para">1. Existing Enum linking</p>
38+
<span class="enumname"><a href="enum.enum-namespace-existing-enum.html" class="enumname">Enum\Namespace\Existing_Enum</a></span>
39+
<span class="enumname"><a href="enum.enum-namespace-existing-enum.html" class="enumname">\Enum\Namespace\Existing_Enum</a></span>
40+
</div>
41+
42+
<div class="section">
43+
<p class="para">2. Enum linking (non-FQN) in method/function parameter and return type</p>
44+
<div class="methodsynopsis dc-description"><span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">Enum\Namespace\Existing_Enum</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">Enum\Namespace\Existing_Enum</a></span></div>
45+
46+
</div>
47+
48+
<div class="section">
49+
<p class="para">3. Enum linking (FQN) in method/function parameter and return type</p>
50+
<div class="methodsynopsis dc-description"><span class="methodname"><strong>method_name</strong></span>(<span class="methodparam"><span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">\Enum\Namespace\Existing_Enum</a></span> <code class="parameter">$paramName</code></span>): <span class="type"><a href="enumname.enumpage.html" class="type Enum\Namespace\Existing_Enum">\Enum\Namespace\Existing_Enum</a></span></div>
51+
52+
</div>
53+
54+
</div>

0 commit comments

Comments
 (0)