summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Lykke Andersen <Jakob@caput.dk>2021-10-31 15:30:13 +0100
committerJakob Lykke Andersen <Jakob@caput.dk>2022-01-16 09:48:06 +0100
commit184fd6a4aa7389d784e20f399c0eea69a3c7dc0b (patch)
treee818439099e4076cca8be0639a14e9881140e728
parent36c6eafdf17edeaec3c902d15cc757edb3937d5d (diff)
downloadsphinx-git-184fd6a4aa7389d784e20f399c0eea69a3c7dc0b.tar.gz
intersphinx role, update based on merged refactoring
-rw-r--r--sphinx/ext/intersphinx.py26
-rw-r--r--tests/roots/test-ext-intersphinx-role/conf.py2
2 files changed, 17 insertions, 11 deletions
diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py
index d004f867f..c3cf0eec7 100644
--- a/sphinx/ext/intersphinx.py
+++ b/sphinx/ext/intersphinx.py
@@ -563,17 +563,21 @@ class IntersphinxRoleResolver(ReferencesResolver):
def run(self, **kwargs: Any) -> None:
for node in self.document.traverse(pending_xref):
- if 'intersphinx' in node:
- contnode = cast(nodes.TextElement, node[0].deepcopy())
- # temporary hax to glue on inventory info again
- if node['inventory'] is not None:
- node['reftarget'] = node['inventory'] + ":" + node['reftarget']
- newnode = missing_reference(self.app, self.env, node, contnode)
- if newnode is None:
- # no warning, the normal missing_reference handler will do that
- pass
- else:
- node.replace_self(newnode)
+ if 'intersphinx' not in node:
+ continue
+ contnode = cast(nodes.TextElement, node[0].deepcopy())
+ inv_name = node['inventory']
+ if inv_name is not None:
+ if not inventory_exists(self.env, inv_name):
+ continue
+ newnode = resolve_reference_in_inventory(self.env, inv_name, node, contnode)
+ else:
+ newnode = resolve_reference_any_inventory(self.env, False, node, contnode)
+ if newnode is None:
+ # no warning, the normal missing_reference handler will do that
+ pass
+ else:
+ node.replace_self(newnode)
def install_dispatcher(app: Sphinx, docname: str, source: List[str]) -> None:
diff --git a/tests/roots/test-ext-intersphinx-role/conf.py b/tests/roots/test-ext-intersphinx-role/conf.py
index 9485eb207..a54f5c2ad 100644
--- a/tests/roots/test-ext-intersphinx-role/conf.py
+++ b/tests/roots/test-ext-intersphinx-role/conf.py
@@ -1 +1,3 @@
extensions = ['sphinx.ext.intersphinx']
+# the role should not honor this conf var
+intersphinx_disabled_reftypes = ['*']