mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Add Domain.add_object_type() to update internal caches correctly
This commit is contained in:
parent
fe07365a8c
commit
838f7fc29a
@ -188,6 +188,18 @@ class Domain(object):
|
||||
self.objtypes_for_role = self._role2type.get # type: Callable[[unicode], List[unicode]] # NOQA
|
||||
self.role_for_objtype = self._type2role.get # type: Callable[[unicode], unicode]
|
||||
|
||||
def add_object_type(self, name, objtype):
|
||||
# type: (Objtype) -> None
|
||||
"""Add an object type."""
|
||||
self.object_types[name] = objtype
|
||||
if objtype.roles:
|
||||
self._type2role[name] = objtype.roles[0]
|
||||
else:
|
||||
self._type2role[name] = ''
|
||||
|
||||
for role in objtype.roles:
|
||||
self._role2type.setdefault(role, []).append(name)
|
||||
|
||||
def role(self, name):
|
||||
# type: (unicode) -> Callable
|
||||
"""Return a role adapter function that always gives the registered
|
||||
|
@ -112,10 +112,11 @@ class SphinxComponentRegistry(object):
|
||||
domain = DomainClass(env)
|
||||
|
||||
# transplant components added by extensions
|
||||
domain.object_types.update(self.domain_object_types.get(domain.name, {}))
|
||||
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, []))
|
||||
for name, objtype in iteritems(self.domain_object_types.get(domain.name, {})):
|
||||
domain.add_object_type(name, objtype)
|
||||
|
||||
yield domain
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user