From c9a16d8f3a1f5ea0f62fdee415a178c100cf2e63 Mon Sep 17 00:00:00 2001 From: Eric Wieser Date: Sat, 31 Dec 2016 01:58:10 +0000 Subject: [PATCH 1/2] Fixes #292 --- breathe/renderer/sphinxrenderer.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/breathe/renderer/sphinxrenderer.py b/breathe/renderer/sphinxrenderer.py index c6d43ed4..59801d02 100644 --- a/breathe/renderer/sphinxrenderer.py +++ b/breathe/renderer/sphinxrenderer.py @@ -71,6 +71,11 @@ def visit_desc_signature(self, node): # https://github.com/michaeljones/breathe/issues/242 self.declarator = node + def visit_desc_signature_line(self, node): + # In sphinx 1.5, there is now a desc_signature_line node within the desc_signature + # This should be used instead + self.declarator = node + def visit_desc_content(self, node): self.content = node From c68307525e57cd51fb62935fc4956f0934e52288 Mon Sep 17 00:00:00 2001 From: Eric Wieser Date: Sat, 31 Dec 2016 11:33:53 +0000 Subject: [PATCH 2/2] Use the node finder everywhere, so that #292-related bugs are avoided --- breathe/renderer/sphinxrenderer.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/breathe/renderer/sphinxrenderer.py b/breathe/renderer/sphinxrenderer.py index 59801d02..35f40666 100644 --- a/breathe/renderer/sphinxrenderer.py +++ b/breathe/renderer/sphinxrenderer.py @@ -262,7 +262,12 @@ def run_domain_directive(self, kind, names): nodes = domain_directive.run() # Filter out outer class names if we are rendering a member as a part of a class content. - signode = nodes[1].children[0] + rst_node = nodes[1] + finder = NodeFinder(rst_node.document) + rst_node.walk(finder) + + signode = finder.declarator + if len(names) > 0 and self.context.child: signode.children = [n for n in signode.children if not n.tagname == 'desc_addname'] return nodes @@ -310,9 +315,14 @@ def render_declaration(self, node, declaration=None, description=None, **kwargs) if obj_type is None: obj_type = node.kind nodes = self.run_domain_directive(obj_type, [declaration.replace('\n', ' ')]) + rst_node = nodes[1] - signode = rst_node[0] - contentnode = rst_node[-1] + finder = NodeFinder(rst_node.document) + rst_node.walk(finder) + + signode = finder.declarator + contentnode = finder.content + update_signature = kwargs.get('update_signature', None) if update_signature is not None: update_signature(signode, obj_type)