diff --git a/jandd/sphinxext/ip.py b/jandd/sphinxext/ip.py index 595f1c3..d0f6340 100644 --- a/jandd/sphinxext/ip.py +++ b/jandd/sphinxext/ip.py @@ -39,8 +39,9 @@ class IPXRefRole(XRefRole): """ Cross referencing role for the IP domain. """ - def __init__(self, method, **kwargs): + def __init__(self, method, index_type, **kwargs): self.method = method + self.index_type = index_type innernodeclass=None if method in ('v4', 'v6'): innernodeclass = ip_node @@ -58,8 +59,13 @@ class IPXRefRole(XRefRole): indexnode = addnodes.index() targetid = 'index-%s' % env.new_serialno('index') targetnode = nodes.target('', '', ids=[targetid]) - idxtext = "%s; %s" % (node.astext(), env.docname) - indexnode['entries'] = [('single', idxtext, targetid, '', None)] + doctitle = document.traverse(nodes.title)[0].astext() + idxtext = "%s; %s" % (node.astext(), doctitle) + idxtext2 = "%s; %s" % (self.index_type, node.astext()) + indexnode['entries'] = [ + ('single', idxtext, targetid, '', None), + ('single', idxtext2, targetid, '', None), + ] return [indexnode, targetnode, node], [] except KeyError as e: return [node], [e.args[0]] @@ -93,8 +99,15 @@ class IPRange(Directive): self.rangespec = self.arguments[0] node = nodes.section() name = self.handle_rangespec(node) + if self.env.docname in self.env.titles: + doctitle = self.env.titles[self.env.docname] + else: + doctitle = self.state.document.traverse(nodes.title)[0].astext() + idx_text = "%s; %s" % (self.rangespec, doctitle) self.indexnode = addnodes.index(entries=[ - ('single', self.get_index_text(), name, '')]) + ('single', idx_text, name, ''), + ('single', self.get_index_text(), name, '') + ]) if self.content: contentnode = nodes.paragraph('') @@ -148,10 +161,10 @@ class IPDomain(Domain): } roles = { - 'v4': IPXRefRole('v4'), - 'v6': IPXRefRole('v6'), - 'v4range': IPXRefRole('v4range'), - 'v6range': IPXRefRole('v6range'), + 'v4': IPXRefRole('v4', l_('IPv4 address')), + 'v6': IPXRefRole('v6', l_('IPv6 address')), + 'v4range': IPXRefRole('v4range', l_('IPv4 range')), + 'v6range': IPXRefRole('v6range', l_('IPv6 range')), } initial_data = {