__init__.py

来自「Requirement ===========================」· Python 代码 · 共 157 行

PY
157
字号
# Author: David Goodger# Contact: goodger@users.sourceforge.net# Revision: $Revision: 3416 $# Date: $Date: 2005-06-01 15:52:43 +0200 (Wed, 01 Jun 2005) $# Copyright: This module has been placed in the public domain."""This is ``docutils.parsers.rst`` package. It exports a single class, `Parser`,the reStructuredText parser.Usage=====1. Create a parser::       parser = docutils.parsers.rst.Parser()   Several optional arguments may be passed to modify the parser's behavior.   Please see `Customizing the Parser`_ below for details.2. Gather input (a multi-line string), by reading a file or the standard   input::       input = sys.stdin.read()3. Create a new empty `docutils.nodes.document` tree::       document = docutils.utils.new_document(source, settings)   See `docutils.utils.new_document()` for parameter details.4. Run the parser, populating the document tree::       parser.parse(input, document)Parser Overview===============The reStructuredText parser is implemented as a state machine, examining itsinput one line at a time. To understand how the parser works, please firstbecome familiar with the `docutils.statemachine` module, then see the`states` module.Customizing the Parser----------------------Anything that isn't already customizable is that way simply because that typeof customizability hasn't been implemented yet.  Patches welcome!When instantiating an object of the `Parser` class, two parameters may bepassed: ``rfc2822`` and ``inliner``.  Pass ``rfc2822=1`` to enable an initialRFC-2822 style header block, parsed as a "field_list" element (with "class"attribute set to "rfc2822").  Currently this is the only body-level elementwhich is customizable without subclassing.  (Tip: subclass `Parser` and changeits "state_classes" and "initial_state" attributes to refer to new classes.Contact the author if you need more details.)The ``inliner`` parameter takes an instance of `states.Inliner` or a subclass.It handles inline markup recognition.  A common extension is the addition offurther implicit hyperlinks, like "RFC 2822".  This can be done by subclassing`states.Inliner`, adding a new method for the implicit markup, and adding a``(pattern, method)`` pair to the "implicit_dispatch" attribute of thesubclass.  See `states.Inliner.implicit_inline()` for details.  Explicitinline markup can be customized in a `states.Inliner` subclass via the``patterns.initial`` and ``dispatch`` attributes (and new methods asappropriate)."""__docformat__ = 'reStructuredText'import docutils.parsersimport docutils.statemachinefrom docutils.parsers.rst import statesfrom docutils import frontendclass Parser(docutils.parsers.Parser):    """The reStructuredText parser."""    supported = ('restructuredtext', 'rst', 'rest', 'restx', 'rtxt', 'rstx')    """Aliases this parser supports."""    settings_spec = (        'reStructuredText Parser Options',        None,        (('Recognize and link to standalone PEP references (like "PEP 258").',          ['--pep-references'],          {'action': 'store_true', 'validator': frontend.validate_boolean}),         ('Base URL for PEP references '          '(default "http://www.python.org/peps/").',          ['--pep-base-url'],          {'metavar': '<URL>', 'default': 'http://www.python.org/peps/',           'validator': frontend.validate_url_trailing_slash}),         ('Recognize and link to standalone RFC references (like "RFC 822").',          ['--rfc-references'],          {'action': 'store_true', 'validator': frontend.validate_boolean}),         ('Base URL for RFC references (default "http://www.faqs.org/rfcs/").',          ['--rfc-base-url'],          {'metavar': '<URL>', 'default': 'http://www.faqs.org/rfcs/',           'validator': frontend.validate_url_trailing_slash}),         ('Set number of spaces for tab expansion (default 8).',          ['--tab-width'],          {'metavar': '<width>', 'type': 'int', 'default': 8,           'validator': frontend.validate_nonnegative_int}),         ('Remove spaces before footnote references.',          ['--trim-footnote-reference-space'],          {'action': 'store_true', 'validator': frontend.validate_boolean}),         ('Leave spaces before footnote references.',          ['--leave-footnote-reference-space'],          {'action': 'store_false', 'dest': 'trim_footnote_reference_space',           'validator': frontend.validate_boolean}),         ('Disable directives that insert the contents of external file '          '("include" & "raw"); replaced with a "warning" system message.',          ['--no-file-insertion'],          {'action': 'store_false', 'default': 1,           'dest': 'file_insertion_enabled'}),         ('Enable directives that insert the contents of external file '          '("include" & "raw").  Enabled by default.',          ['--file-insertion-enabled'],          {'action': 'store_true', 'dest': 'file_insertion_enabled'}),         ('Disable the "raw" directives; replaced with a "warning" '          'system message.',          ['--no-raw'],          {'action': 'store_false', 'default': 1, 'dest': 'raw_enabled'}),         ('Enable the "raw" directive.  Enabled by default.',          ['--raw-enabled'],          {'action': 'store_true', 'dest': 'raw_enabled'}),))    config_section = 'restructuredtext parser'    config_section_dependencies = ('parsers',)    def __init__(self, rfc2822=None, inliner=None):        if rfc2822:            self.initial_state = 'RFC2822Body'        else:            self.initial_state = 'Body'        self.state_classes = states.state_classes        self.inliner = inliner    def parse(self, inputstring, document):        """Parse `inputstring` and populate `document`, a document tree."""        self.setup_parse(inputstring, document)        self.statemachine = states.RSTStateMachine(              state_classes=self.state_classes,              initial_state=self.initial_state,              debug=document.reporter.debug_flag)        inputlines = docutils.statemachine.string2lines(              inputstring, tab_width=document.settings.tab_width,              convert_whitespace=1)        self.statemachine.run(inputlines, document, inliner=self.inliner)        self.finish_parse()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?