From 334968385b9ad2aa320dca4edcf7ebaa62c3b547 Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Sun, 24 Apr 2016 15:04:07 +0200 Subject: [PATCH] Add handling for missing references --- jandd/sphinxext/ip/__init__.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/jandd/sphinxext/ip/__init__.py b/jandd/sphinxext/ip/__init__.py index e2a3f13..6e32f4d 100644 --- a/jandd/sphinxext/ip/__init__.py +++ b/jandd/sphinxext/ip/__init__.py @@ -39,12 +39,15 @@ class IPXRefRole(XRefRole): return title, target def result_nodes(self, document, env, node, is_ref): - indexnode = addnodes.index() - targetid = 'index-%s' % env.new_serialno('index') - targetnode = nodes.target('', '', ids=[targetid]) - idxtext = "%s; %s" % (node.astext(), env.docname) - indexnode['entries'] = [('single', idxtext, targetid, '', None)] - return [indexnode, targetnode, node], [] + try: + indexnode = addnodes.index() + targetid = 'index-%s' % env.new_serialno('index') + targetnode = nodes.target('', '', ids=[targetid]) + idxtext = "%s; %s" % (node.astext(), env.docname) + indexnode['entries'] = [('single', idxtext, targetid, '', None)] + return [indexnode, targetnode, node], [] + except KeyError as e: + return [node], [e.args[0]] class IPObject(ObjectDescription): @@ -166,7 +169,7 @@ class IPDomain(Domain): if role is None: return None resnode = role.result_nodes(env.get_doctree(fromdocname), - env, node, None)[0][0] + env, node, True)[0][0] if isinstance(resnode, addnodes.pending_xref): text = node[0][0] reporter = env.get_doctree(fromdocname).reporter