| 1 | # Author: David Goodger |
|---|
| 2 | # Contact: goodger@users.sourceforge.net |
|---|
| 3 | # Revision: $Revision: 1645 $ |
|---|
| 4 | # Date: $Date: 2003-08-27 22:50:43 +0200 (Wed, 27 Aug 2003) $ |
|---|
| 5 | # Copyright: This module has been placed in the public domain. |
|---|
| 6 | |
|---|
| 7 | """ |
|---|
| 8 | This package contains Docutils parser modules. |
|---|
| 9 | """ |
|---|
| 10 | |
|---|
| 11 | __docformat__ = 'reStructuredText' |
|---|
| 12 | |
|---|
| 13 | from docutils import Component |
|---|
| 14 | |
|---|
| 15 | |
|---|
| 16 | class Parser(Component): |
|---|
| 17 | |
|---|
| 18 | component_type = 'parser' |
|---|
| 19 | config_section = 'parsers' |
|---|
| 20 | |
|---|
| 21 | def parse(self, inputstring, document): |
|---|
| 22 | """Override to parse `inputstring` into document tree `document`.""" |
|---|
| 23 | raise NotImplementedError('subclass must override this method') |
|---|
| 24 | |
|---|
| 25 | def setup_parse(self, inputstring, document): |
|---|
| 26 | """Initial parse setup. Call at start of `self.parse()`.""" |
|---|
| 27 | self.inputstring = inputstring |
|---|
| 28 | self.document = document |
|---|
| 29 | document.reporter.attach_observer(document.note_parse_message) |
|---|
| 30 | |
|---|
| 31 | def finish_parse(self): |
|---|
| 32 | """Finalize parse details. Call at end of `self.parse()`.""" |
|---|
| 33 | self.document.reporter.detach_observer( |
|---|
| 34 | self.document.note_parse_message) |
|---|
| 35 | |
|---|
| 36 | |
|---|
| 37 | _parser_aliases = { |
|---|
| 38 | 'restructuredtext': 'rst', |
|---|
| 39 | 'rest': 'rst', |
|---|
| 40 | 'restx': 'rst', |
|---|
| 41 | 'rtxt': 'rst',} |
|---|
| 42 | |
|---|
| 43 | def get_parser_class(parser_name): |
|---|
| 44 | """Return the Parser class from the `parser_name` module.""" |
|---|
| 45 | parser_name = parser_name.lower() |
|---|
| 46 | if _parser_aliases.has_key(parser_name): |
|---|
| 47 | parser_name = _parser_aliases[parser_name] |
|---|
| 48 | module = __import__(parser_name, globals(), locals()) |
|---|
| 49 | return module.Parser |
|---|