mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #2644 from pfultz2/refdoc
Make refdoc attribute optional for pending_xref nodes
This commit is contained in:
@@ -1519,9 +1519,9 @@ class BuildEnvironment:
|
||||
typ, target, node, contnode)
|
||||
# really hardwired reference types
|
||||
elif typ == 'any':
|
||||
newnode = self._resolve_any_reference(builder, node, contnode)
|
||||
newnode = self._resolve_any_reference(builder, refdoc, node, contnode)
|
||||
elif typ == 'doc':
|
||||
newnode = self._resolve_doc_reference(builder, node, contnode)
|
||||
newnode = self._resolve_doc_reference(builder, refdoc, node, contnode)
|
||||
elif typ == 'citation':
|
||||
newnode = self._resolve_citation(builder, refdoc, node, contnode)
|
||||
# no new node found? try the missing-reference event
|
||||
@@ -1569,10 +1569,10 @@ class BuildEnvironment:
|
||||
msg = '%r reference target not found: %%(target)s' % typ
|
||||
self.warn_node(msg % {'target': target}, node, type='ref', subtype=typ)
|
||||
|
||||
def _resolve_doc_reference(self, builder, node, contnode):
|
||||
def _resolve_doc_reference(self, builder, refdoc, node, contnode):
|
||||
# directly reference to document by source name;
|
||||
# can be absolute or relative
|
||||
docname = docname_join(node['refdoc'], node['reftarget'])
|
||||
docname = docname_join(refdoc, node['reftarget'])
|
||||
if docname in self.all_docs:
|
||||
if node['refexplicit']:
|
||||
# reference with explicit title
|
||||
@@ -1582,7 +1582,7 @@ class BuildEnvironment:
|
||||
innernode = nodes.inline(caption, caption)
|
||||
innernode['classes'].append('doc')
|
||||
newnode = nodes.reference('', '', internal=True)
|
||||
newnode['refuri'] = builder.get_relative_uri(node['refdoc'], docname)
|
||||
newnode['refuri'] = builder.get_relative_uri(refdoc, docname)
|
||||
newnode.append(innernode)
|
||||
return newnode
|
||||
|
||||
@@ -1605,13 +1605,12 @@ class BuildEnvironment:
|
||||
# transforms.CitationReference.apply.
|
||||
del node['ids'][:]
|
||||
|
||||
def _resolve_any_reference(self, builder, node, contnode):
|
||||
def _resolve_any_reference(self, builder, refdoc, node, contnode):
|
||||
"""Resolve reference generated by the "any" role."""
|
||||
refdoc = node['refdoc']
|
||||
target = node['reftarget']
|
||||
results = []
|
||||
# first, try resolving as :doc:
|
||||
doc_ref = self._resolve_doc_reference(builder, node, contnode)
|
||||
doc_ref = self._resolve_doc_reference(builder, refdoc, node, contnode)
|
||||
if doc_ref:
|
||||
results.append(('doc', doc_ref))
|
||||
# next, do the standard domain (makes this a priority)
|
||||
|
||||
Reference in New Issue
Block a user