Source code for sphinx_ros.indices

"""
``sphinx_ros.indices`` module
=============================

This modules defines the indices added to Sphinx.
"""
from six import iteritems
from sphinx.domains import Index


[docs]class RosMessageIndex(Index): """ Index listing the documented message types. """ name = 'msgindex' localname = 'Message Type Index' shortname = 'msgs' def generate(self, docnames=None): content = {} # Get messages from domain data messages = self.domain.data['messages'] base_messages = {} # Split package name and make new dict. # name -> document name, anchor, priority, deprecated for msgname, (docname, anchor, _, deprecated) in iteritems(messages): pkgname, _, base_msgname = msgname.split('.') base_messages[base_msgname] = (pkgname, docname, anchor, deprecated) # Sort the messages in alphabetical order base_messages = sorted(iteritems(base_messages), key=lambda x: x[0].lower()) # base_name -> pkg name, document name, anchor, deprecated for base_msgname, (pkg, docname, anchor, deprecated) in base_messages: if docnames and docname not in docnames: continue if base_msgname[0].lower() in content: entries = content[base_msgname[0].lower()] else: entries = [] qualifier = deprecated and 'Deprecated' or '' entries.append([base_msgname + ' (in {})'.format(pkg), 0, docname, anchor, '', qualifier, '']) content[base_msgname[0].lower()] = entries content = sorted(content.items()) return content, True
[docs]class RosPackageIndex(Index): """ Index listing the documented packages. """ name = 'pkgindex' localname = 'Package Index' shortname = 'pkgs' def generate(self, docnames=None): content = {} # Sort the packages in alphabetical order packages = sorted(iteritems(self.domain.data['packages']), key=lambda x: x[0].lower()) # name -> document name, anchor, priority, deprecated for pkgname, (docname, anchor, _, deprecated) in packages: if docnames and docname not in docnames: continue if pkgname[0].lower() in content: entries = content[pkgname[0].lower()] else: entries = [] qualifier = deprecated and 'Deprecated' or '' entries.append([pkgname, 0, docname, anchor, '', qualifier, '']) content[pkgname[0].lower()] = entries content = sorted(content.items()) return content, True