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.objtypes_for_role = self._role2type.get # type: Callable[[unicode], List[unicode]] # NOQA
|
||||||
self.role_for_objtype = self._type2role.get # type: Callable[[unicode], unicode]
|
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):
|
def role(self, name):
|
||||||
# type: (unicode) -> Callable
|
# type: (unicode) -> Callable
|
||||||
"""Return a role adapter function that always gives the registered
|
"""Return a role adapter function that always gives the registered
|
||||||
|
@ -112,10 +112,11 @@ class SphinxComponentRegistry(object):
|
|||||||
domain = DomainClass(env)
|
domain = DomainClass(env)
|
||||||
|
|
||||||
# transplant components added by extensions
|
# 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.directives.update(self.domain_directives.get(domain.name, {}))
|
||||||
domain.roles.update(self.domain_roles.get(domain.name, {}))
|
domain.roles.update(self.domain_roles.get(domain.name, {}))
|
||||||
domain.indices.extend(self.domain_indices.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
|
yield domain
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user