diff --git a/phpdotnet/phd/Package/Generic/XHTML.php b/phpdotnet/phd/Package/Generic/XHTML.php index e5cdaed5..b5ab2b90 100644 --- a/phpdotnet/phd/Package/Generic/XHTML.php +++ b/phpdotnet/phd/Package/Generic/XHTML.php @@ -467,6 +467,11 @@ abstract class Package_Generic_XHTML extends Format_Abstract_XHTML { 'constant' => 'format_suppressed_text', ), /** Those are used to retrieve the class/interface name to be able to remove it from method names */ + 'package' => [ + /* DEFAULT */ false, + 'packagesynopsis' => 'format_packagesynopsis_package_text' + ], + /** Those are used to retrieve the class/interface name to be able to remove it from method names */ 'classname' => [ /* DEFAULT */ false, 'ooclass' => [ @@ -538,7 +543,10 @@ abstract class Package_Generic_XHTML extends Format_Abstract_XHTML { protected $cchunk = array(); /* Default Chunk variables */ private $dchunk = array( - "packagesynopsis" => false, + "packagesynopsis" => [ + "open" => false, + "namespace" => '', + ], "classsynopsis" => [ "close" => false, "classname" => false, @@ -1257,7 +1265,7 @@ public function format_classsynopsis($open, $name, $attrs, $props) { /** Legacy presentation does not use the class attribute */ $this->cchunk["classsynopsis"]['legacy'] = !isset($attrs[Reader::XMLNS_DOCBOOK]["class"]); - $inPackageSynopsis = $this->cchunk["packagesynopsis"] ?? false; + $inPackageSynopsis = $this->cchunk["packagesynopsis"]["open"] ?? false; if ($this->cchunk["classsynopsis"]['legacy']) { if ($open) { @@ -1324,18 +1332,22 @@ public function format_classsynopsis_methodsynopsis_methodname_text($value, $tag } list($class, $method) = explode($explode, $value); - if ($class !== $this->cchunk["classsynopsis"]["classname"]) { + $thisFqcn = $this->getFqcn(); + + if ($class !== $thisFqcn) { return $value; } + return $method; } public function format_packagesynopsis($open, $name, $attrs, $props) { + $this->cchunk["packagesynopsis"] = $this->dchunk["packagesynopsis"]; if ($open) { - $this->cchunk["packagesynopsis"] = true; + $this->cchunk["packagesynopsis"]["open"] = true; return '
'; } - $this->cchunk["packagesynopsis"] = false; + $this->cchunk["packagesynopsis"]["open"] = false; return '
'; } @@ -1346,8 +1358,16 @@ public function format_packagesynopsis_package($open, $name, $attrs, $props) { return ';
'; } + public function format_packagesynopsis_package_text($value, $tag) { + if (!$this->cchunk["packagesynopsis"]["namespace"]) { + $this->cchunk["packagesynopsis"]["namespace"] = $value; + } + + return $this->TEXT($value); + } + public function format_enumsynopsis($open, $name, $attrs, $props) { - $inPackageSynopsis = $this->cchunk["packagesynopsis"] ?? false; + $inPackageSynopsis = $this->cchunk["packagesynopsis"]["open"] ?? false; if ($open) { if ($inPackageSynopsis) { return '
'; @@ -2683,4 +2703,14 @@ public function onNewPage(): void { $this->perPageExampleCounter = 0; } + + protected function getFqcn() { + $fqcn = ""; + + if ($this->cchunk["packagesynopsis"]["namespace"]) { + $fqcn = $this->cchunk["packagesynopsis"]["namespace"] . "\\"; + } + + return $fqcn . $this->cchunk["classsynopsis"]["classname"]; + } } diff --git a/phpdotnet/phd/Package/PHP/XHTML.php b/phpdotnet/phd/Package/PHP/XHTML.php index fce9f6f7..a50b1b23 100644 --- a/phpdotnet/phd/Package/PHP/XHTML.php +++ b/phpdotnet/phd/Package/PHP/XHTML.php @@ -807,7 +807,7 @@ public function format_acronym_text($value, $tag) { public function format_classsynopsis_fieldsynopsis_varname_text($value, $tag) { if ($this->cchunk["classsynopsis"]["classname"]) { if (strpos($value, "::") === false && strpos($value, "->") === false) { - $value = $this->cchunk["classsynopsis"]["classname"] . "->" . $value; + $value = $this->getFqcn() . "->" . $value; } } @@ -817,7 +817,7 @@ public function format_classsynopsis_fieldsynopsis_varname_text($value, $tag) { public function format_classsynopsis_methodsynopsis_methodname_text($value, $tag) { if ($this->cchunk["classsynopsis"]["classname"]) { if (strpos($value, "::") === false && strpos($value, "->") === false) { - $value = $this->cchunk["classsynopsis"]["classname"] . "::" . $value; + $value = $this->getFqcn() . "::" . $value; } } diff --git a/tests/package/php/data/packagesynopsis_rendering.xml b/tests/package/php/data/packagesynopsis_rendering.xml index 1cd3013a..e0e37a82 100644 --- a/tests/package/php/data/packagesynopsis_rendering.xml +++ b/tests/package/php/data/packagesynopsis_rendering.xml @@ -15,6 +15,17 @@ implements Stringable + + + public + int + scale + + + + public BcMath\NumberBcMath\Number::floor + + diff --git a/tests/package/php/packagesynopsis_rendering_001.phpt b/tests/package/php/packagesynopsis_rendering_001.phpt index ba011850..6e8ba6b5 100644 --- a/tests/package/php/packagesynopsis_rendering_001.phpt +++ b/tests/package/php/packagesynopsis_rendering_001.phpt @@ -34,6 +34,16 @@ Content: implements Stringable {
+ +
+ public + int + $scale;
+ + +
+ public floor(): BcMath\Number
+ }