diff options
Diffstat (limited to 'sphinx/directives/__init__.py')
-rw-r--r-- | sphinx/directives/__init__.py | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/sphinx/directives/__init__.py b/sphinx/directives/__init__.py index 250a013e..969426bc 100644 --- a/sphinx/directives/__init__.py +++ b/sphinx/directives/__init__.py @@ -11,7 +11,8 @@ import re -from docutils.parsers.rst import Directive, directives +from docutils import nodes +from docutils.parsers.rst import Directive, directives, roles from sphinx import addnodes from sphinx.util.docfields import DocFieldTransformer @@ -162,6 +163,34 @@ class ObjectDescription(Directive): DescDirective = ObjectDescription +class DefaultRole(Directive): + """ + Set the default interpreted text role. Overridden from docutils. + """ + + optional_arguments = 1 + final_argument_whitespace = False + + def run(self): + if not self.arguments: + if '' in roles._roles: + # restore the "default" default role + del roles._roles[''] + return [] + role_name = self.arguments[0] + role, messages = roles.role(role_name, self.state_machine.language, + self.lineno, self.state.reporter) + if role is None: + error = self.state.reporter.error( + 'Unknown interpreted text role "%s".' % role_name, + nodes.literal_block(self.block_text, self.block_text), + line=self.lineno) + return messages + [error] + roles._roles[''] = role + self.state.document.settings.env.temp_data['default_role'] = role_name + return messages + + class DefaultDomain(Directive): """ Directive to (re-)set the default domain for this source file. @@ -178,7 +207,7 @@ class DefaultDomain(Directive): domain_name = self.arguments[0].lower() # if domain_name not in env.domains: # # try searching by label - # for domain in env.domains.itervalues(): + # for domain in itervalues(env.domains): # if domain.label.lower() == domain_name: # domain_name = domain.name # break @@ -186,6 +215,7 @@ class DefaultDomain(Directive): return [] +directives.register_directive('default-role', DefaultRole) directives.register_directive('default-domain', DefaultDomain) directives.register_directive('describe', ObjectDescription) # new, more consistent, name |