Fix linking with "any" to :ref: and :term: with non-lowercased targets.

This commit is contained in:
Georg Brandl 2014-09-20 13:34:36 +02:00
parent 6c3789a353
commit 90d43569de

View File

@ -637,15 +637,20 @@ class StandardDomain(Domain):
def resolve_any_xref(self, env, fromdocname, builder, target, def resolve_any_xref(self, env, fromdocname, builder, target,
node, contnode): node, contnode):
results = [] results = []
ltarget = target.lower() # :ref: lowercases its target automatically
for role in ('ref', 'option'): # do not try "keyword" for role in ('ref', 'option'): # do not try "keyword"
res = self.resolve_xref(env, fromdocname, builder, role, target, res = self.resolve_xref(env, fromdocname, builder, role,
ltarget if role == 'ref' else target,
node, contnode) node, contnode)
if res: if res:
results.append(('std:ref', res)) results.append(('std:ref', res))
# all others # all others
for objtype in self.object_types: for objtype in self.object_types:
if (objtype, target) in self.data['objects']: key = (objtype, target)
docname, labelid = self.data['objects'][objtype, target] if objtype == 'term':
key = (objtype, ltarget)
if key in self.data['objects']:
docname, labelid = self.data['objects'][key]
results.append(('std:' + self.role_for_objtype(objtype), results.append(('std:' + self.role_for_objtype(objtype),
make_refnode(builder, fromdocname, docname, make_refnode(builder, fromdocname, docname,
labelid, contnode))) labelid, contnode)))