123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- # $Id: admonitions.py 9037 2022-03-05 23:31:10Z milde $
- # Author: David Goodger <goodger@python.org>
- # Copyright: This module has been placed in the public domain.
- """
- Admonition directives.
- """
- __docformat__ = 'reStructuredText'
- from docutils.parsers.rst import Directive
- from docutils.parsers.rst import directives
- from docutils.parsers.rst.roles import set_classes
- from docutils import nodes
- class BaseAdmonition(Directive):
- final_argument_whitespace = True
- option_spec = {'class': directives.class_option,
- 'name': directives.unchanged}
- has_content = True
- node_class = None
- """Subclasses must set this to the appropriate admonition node class."""
- def run(self):
- set_classes(self.options)
- self.assert_has_content()
- text = '\n'.join(self.content)
- admonition_node = self.node_class(text, **self.options)
- self.add_name(admonition_node)
- if self.node_class is nodes.admonition:
- title_text = self.arguments[0]
- textnodes, messages = self.state.inline_text(title_text,
- self.lineno)
- title = nodes.title(title_text, '', *textnodes)
- title.source, title.line = (
- self.state_machine.get_source_and_line(self.lineno))
- admonition_node += title
- admonition_node += messages
- if 'classes' not in self.options:
- admonition_node['classes'] += ['admonition-'
- + nodes.make_id(title_text)]
- self.state.nested_parse(self.content, self.content_offset,
- admonition_node)
- return [admonition_node]
- class Admonition(BaseAdmonition):
- required_arguments = 1
- node_class = nodes.admonition
- class Attention(BaseAdmonition):
- node_class = nodes.attention
- class Caution(BaseAdmonition):
- node_class = nodes.caution
- class Danger(BaseAdmonition):
- node_class = nodes.danger
- class Error(BaseAdmonition):
- node_class = nodes.error
- class Hint(BaseAdmonition):
- node_class = nodes.hint
- class Important(BaseAdmonition):
- node_class = nodes.important
- class Note(BaseAdmonition):
- node_class = nodes.note
- class Tip(BaseAdmonition):
- node_class = nodes.tip
- class Warning(BaseAdmonition):
- node_class = nodes.warning
|