Skip to content

Commit 4f343e8

Browse files
committed
Fix absolute class reference inside a namespace scope
This should resolve #56 without as many breaking changes.
1 parent 3e98837 commit 4f343e8

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

sphinxcontrib/phpdomain.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,14 @@ def handle_signature(self, sig, signode):
269269
classname = ""
270270
fullname = name
271271

272+
# A leading \ means the name is fully qualified
273+
# and should not inherit the current namespace.
274+
if fullname.startswith(NS) and namespace:
275+
add_module = False
276+
name = name[1:]
277+
fullname = fullname[1:]
278+
namespace = None
279+
272280
signode["namespace"] = namespace
273281
signode["class"] = self.class_name = classname
274282
signode["fullname"] = fullname
@@ -302,6 +310,7 @@ def handle_signature(self, sig, signode):
302310
signode += addnodes.desc_addname(nodetext, nodetext)
303311

304312
signode += addnodes.desc_name(name, name)
313+
305314
if not arglist:
306315
if self.needs_arglist():
307316
# for callables, add an empty parameter list

test/unit/test_doc2.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,16 @@ No indexing errors or links should point to this namespace.
4242
4343
Another class in a reused namespace
4444

45+
46+
.. php:class:: \Foo\Data\Thing
47+
48+
A class is with an absolute namespace.
49+
50+
51+
Test link generation
52+
====================
53+
54+
:php:class:`Imagine\\Draw\\DrawerInterface`
55+
:php:class:`LibraryName\\OtherClass`
56+
:php:class:`LibraryName\\ThirdClass`
57+
:php:class:`Foo\\Data\\Thing`

0 commit comments

Comments
 (0)