mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Add "anonlabels" property to StandardDomain
This commit is contained in:
parent
443e6f2642
commit
2dc4c13bf9
@ -551,6 +551,11 @@ class StandardDomain(Domain):
|
||||
# type: () -> Dict[str, Tuple[str, str, str]]
|
||||
return self.data.setdefault('labels', {}) # labelname -> docname, labelid, sectionname
|
||||
|
||||
@property
|
||||
def anonlabels(self):
|
||||
# type: () -> Dict[str, Tuple[str, str]]
|
||||
return self.data.setdefault('anonlabels', {}) # labelname -> docname, labelid
|
||||
|
||||
def clear_doc(self, docname):
|
||||
# type: (str) -> None
|
||||
key = None # type: Any
|
||||
@ -571,9 +576,9 @@ class StandardDomain(Domain):
|
||||
for key, (fn, _l, _l) in list(self.labels.items()):
|
||||
if fn == docname:
|
||||
del self.labels[key]
|
||||
for key, (fn, _l) in list(self.data['anonlabels'].items()):
|
||||
for key, (fn, _l) in list(self.anonlabels.items()):
|
||||
if fn == docname:
|
||||
del self.data['anonlabels'][key]
|
||||
del self.anonlabels[key]
|
||||
|
||||
def merge_domaindata(self, docnames, otherdata):
|
||||
# type: (List[str], Dict) -> None
|
||||
@ -597,7 +602,7 @@ class StandardDomain(Domain):
|
||||
self.labels[key] = data
|
||||
for key, data in otherdata['anonlabels'].items():
|
||||
if data[0] in docnames:
|
||||
self.data['anonlabels'][key] = data
|
||||
self.anonlabels[key] = data
|
||||
|
||||
def process_doc(self, env, docname, document):
|
||||
# type: (BuildEnvironment, str, nodes.document) -> None
|
||||
@ -626,7 +631,6 @@ class StandardDomain(Domain):
|
||||
|
||||
def note_labels(self, env, docname, document):
|
||||
# type: (BuildEnvironment, str, nodes.document) -> None
|
||||
anonlabels = self.data['anonlabels']
|
||||
for name, explicit in document.nametypes.items():
|
||||
if not explicit:
|
||||
continue
|
||||
@ -648,7 +652,7 @@ class StandardDomain(Domain):
|
||||
logger.warning(__('duplicate label %s, other instance in %s'),
|
||||
name, env.doc2path(self.labels[name][0]),
|
||||
location=node)
|
||||
anonlabels[name] = docname, labelid
|
||||
self.anonlabels[name] = docname, labelid
|
||||
if node.tagname in ('section', 'rubric'):
|
||||
title = cast(nodes.title, node[0])
|
||||
sectname = clean_astext(title)
|
||||
@ -732,7 +736,7 @@ class StandardDomain(Domain):
|
||||
if node['refexplicit']:
|
||||
# reference to anonymous label; the reference uses
|
||||
# the supplied link caption
|
||||
docname, labelid = self.data['anonlabels'].get(target, ('', ''))
|
||||
docname, labelid = self.anonlabels.get(target, ('', ''))
|
||||
sectname = node.astext()
|
||||
else:
|
||||
# reference to named label; the final node will
|
||||
@ -749,7 +753,7 @@ class StandardDomain(Domain):
|
||||
if target in self.labels:
|
||||
docname, labelid, figname = self.labels.get(target, ('', '', ''))
|
||||
else:
|
||||
docname, labelid = self.data['anonlabels'].get(target, ('', ''))
|
||||
docname, labelid = self.anonlabels.get(target, ('', ''))
|
||||
figname = None
|
||||
|
||||
if not docname:
|
||||
@ -926,9 +930,9 @@ class StandardDomain(Domain):
|
||||
yield (name, sectionname, 'label', docname, labelid, -1)
|
||||
# add anonymous-only labels as well
|
||||
non_anon_labels = set(self.labels)
|
||||
for name, info in self.data['anonlabels'].items():
|
||||
for name, (docname, labelid) in self.anonlabels.items():
|
||||
if name not in non_anon_labels:
|
||||
yield (name, name, 'label', info[0], info[1], -1)
|
||||
yield (name, name, 'label', docname, labelid, -1)
|
||||
|
||||
def get_type_name(self, type, primary=False):
|
||||
# type: (ObjType, bool) -> str
|
||||
|
Loading…
Reference in New Issue
Block a user