ReStructuredText Parser

1. Installation

Before you can use it, you need to install the Python docutils package, which provides the additional ReStructuredText support that MoinMoin needs.

The docutils version you will need depends on the MoinMoin version. If you are reading this text here as part of your MoinMoin installation, you probably have MoinMoin 1.5 or newer, which currently (as of January 2006) needs docutils 0.4.0 or newer, or a recent 0.3.10 snapshot. If you are using MoinMoin on Linux, docutils is probably already available as part of your Linux distribution. For example on Debian GNU/Linux you simply need to type apt-get install python-docutils. Other Linux distributions use other means to install packages: See the documentation of your Linux distribution.

2. The Parser in MoinMoin

The parser supports the same features that are supported by the docutils HTML writer. However, some aspects have been slightly modified to work well with MoinMoin. These areas are outlined below.

3. Using ReST in MoinMoin

3.1. Example

Rendering of reStructured text is not possible, please install Docutils.
This is a *very* simple example. If you see two asterisks around the word "very" in the previous sentence, then the module docutils is improperly installed (or not installed at all). When the module docutils is there, the word is displayed in italics and this whole block of text is not displayed in a special source-code-like format, but like a normal part of the page.

3.2. Unknown Targets

Unknown targets are used to create wiki links. Typically an unknown target would cause an error in a reStructuredText document. To enable wiki like behavior, unknown targets now create links to wiki pages using the target name as the name of the wiki page. For example:

Here is a link to a MoinMoin page named SecondPage_. }}}

The above contains a reStructuredText reference to "SecondPage". The reference would typically cause an unknown target error from the docutils parser. This is because there isn't a target in the document named "SecondPage". However, with the MoinMoin parser, the "SecondPage_" reference instead creates a link to a MoinMoin page named "SecondPage".

MoinMoin-specific link schemes are supported when used in a reStructuredText explicit hyperlink target. For example:

Here is a link to a page attachment.

attachment:Attachment.zip }}}

The above creates a link to an attachment named Attachment.zip. If the attachment for the page does not exist, the link text will be replaced with the typical MoinMoin replacement text for uploading an attachment. Supported MoinMoin-specific link schemes are:

3.4. Inline Images

Docutils image directives, that are not urls, are converted to MoinMoin inline: links. This produces the expected behavior of inserting the image into the document. If the image attachment does not exist, the typical MoinMoin upload new attachment message will be displayed instead. For example:

Here is the picture I took yesterday |image|

.. |image| image:: Yesterday.jpg }}}

The above will insert the image "Yesterday.jpg" in place of |image|.

3.5. Experimental Features

The include and macro directives are considered experimental due to lack of testing. They are expected to work but have not been used extensively.

3.5.1. Include Support

The reStructuredText include directive is supported with some restrictions. The directive allows including wiki pages from the same wiki (page attachments are not candidates for the include directive). Included pages must be formatted using reStructuredText (wiki formatted pages will produce improperly formatted documents). For example, the following would insert the pages header and footer surrounding the page contents.

.. include:: header

The sole document sentence.

.. include:: footer }}}

The number of included documents is limited to ten. This is to prevent denial of service attacks using recursive include directives.

3.5.2. Macro Support

The MoinMoin reStructuredText parser adds a new MoinMoin specific macro directive. The directive allows access to MoinMoin macros from within a reStructuredText document. For example:

Use the title search macro to insert a search box to search through page titles.

.. macro:: TitleSearch }}}

3.6. Known Issues