summaryrefslogtreecommitdiff
path: root/sphinx/application.py
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-02-27 23:13:51 +0100
committerGeorg Brandl <georg@python.org>2010-02-27 23:13:51 +0100
commit42fc484adb89d951066b49143ce62c0264bca3f2 (patch)
tree304ce3d473bca3a1fef38dce0dad72b55a59c381 /sphinx/application.py
parent0b6666904b8535b1c80d75eb27fe6ca6f0ab1e89 (diff)
downloadsphinx-42fc484adb89d951066b49143ce62c0264bca3f2.tar.gz
Add app.override_domain().
Diffstat (limited to 'sphinx/application.py')
-rw-r--r--sphinx/application.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/sphinx/application.py b/sphinx/application.py
index 7d4e3cac..860affbb 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -388,11 +388,18 @@ class Sphinx(object):
roles.register_local_role(name, role)
def add_domain(self, domain):
- # XXX what about subclassing and overriding?
if domain.name in self.domains:
raise ExtensionError('domain %s already registered' % domain.name)
self.domains[domain.name] = domain
+ def override_domain(self, domain):
+ if domain.name not in self.domains:
+ raise ExtensionError('domain %s not yet registered' % domain.name)
+ if not issubclass(domain, self.domains[domain.name]):
+ raise ExtensionError('new domain not a subclass of registered '
+ 'domain' % domain.name)
+ self.domains[domain.name] = domain
+
def add_directive_to_domain(self, domain, name, obj,
content=None, arguments=None, **options):
if domain not in self.domains: