Transplant indices on instantiate domain

This commit is contained in:
Takeshi KOMIYA 2017-05-02 12:38:55 +09:00
parent a2880dffe6
commit a7d4fd1a50
2 changed files with 5 additions and 1 deletions

View File

@ -169,6 +169,7 @@ class Domain(object):
# convert class variables to instance one (to enhance through API)
self.directives = dict(self.directives)
self.roles = dict(self.roles)
self.indices = list(self.indices)
if self.name not in env.domaindata:
assert isinstance(self.initial_data, dict)

View File

@ -53,6 +53,7 @@ class SphinxComponentRegistry(object):
self.builders = {} # type: Dict[unicode, Type[Builder]]
self.domains = {} # type: Dict[unicode, Type[Domain]]
self.domain_directives = {} # type: Dict[unicode, Dict[unicode, Any]]
self.domain_indices = {} # type: Dict[unicode, List[Index]]
self.domain_roles = {} # type: Dict[unicode, Dict[unicode, Any]]
self.post_transforms = [] # type: List[Type[Transform]]
self.source_parsers = {} # type: Dict[unicode, Parser]
@ -111,6 +112,7 @@ class SphinxComponentRegistry(object):
# transplant components added by extensions
domain.directives.update(self.domain_directives.get(domain.name, {}))
domain.roles.update(self.domain_roles.get(domain.name, {}))
domain.indices.extend(self.domain_indices.get(domain.name, []))
yield domain
@ -147,7 +149,8 @@ class SphinxComponentRegistry(object):
logger.debug('[app] adding index to domain: %r', (domain, index))
if domain not in self.domains:
raise ExtensionError(__('domain %s not yet registered') % domain)
self.domains[domain].indices.append(index)
indices = self.domain_indices.setdefault(domain, [])
indices.append(index)
def add_object_type(self, directivename, rolename, indextemplate='',
parse_node=None, ref_nodeclass=None, objname='',