diff options
author | Jakob Lykke Andersen <Jakob@caput.dk> | 2021-10-31 15:30:13 +0100 |
---|---|---|
committer | Jakob Lykke Andersen <Jakob@caput.dk> | 2022-01-16 09:48:06 +0100 |
commit | 184fd6a4aa7389d784e20f399c0eea69a3c7dc0b (patch) | |
tree | e818439099e4076cca8be0639a14e9881140e728 | |
parent | 36c6eafdf17edeaec3c902d15cc757edb3937d5d (diff) | |
download | sphinx-git-184fd6a4aa7389d784e20f399c0eea69a3c7dc0b.tar.gz |
intersphinx role, update based on merged refactoring
-rw-r--r-- | sphinx/ext/intersphinx.py | 26 | ||||
-rw-r--r-- | tests/roots/test-ext-intersphinx-role/conf.py | 2 |
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 = ['*'] |