#acl MoinPagesEditorGroup:read,write,delete,revert All:read ## Please edit (or translate) system/help pages on the moinmaster wiki ONLY. ## For more information, please see MoinMaster:MoinPagesEditorGroup. #language en [[TableOfContents]] = Parsers = Parsers go through the contents of a page to create a sequence of formatter calls which in sequence create some readable output. MoinMoin will choose the parser for a page using different techniques: FORMAT Processing Instruction (see HelpOnProcessingInstructions) and code display regions (see HelpOnFormatting). A `#FORMAT` pi can be used to tell MoinMoin which parser to use for the whole page content. By default this is the ''wiki'' parser. Example: {{{#FORMAT cplusplus ... some C++ source ... }}} With the use of code display regions, a parser can be applied to only a part of a page (this was a processor region in earlier versions of Moin). You specify which parser to call by using a bang path-like construct in the first line. A bang path is a concept known from Unix command line scripts, where they serve the exact same purpose: the first line tells the shell what program to start to process the remaining lines of the script. Example: {{{ { { {#!CSV a,b,c d,e,f } } } }}} For more information on the possible markup, see HelpOnEditing. == ParserBase == !ParserBase is a parser utility class used to produce colorized source displays. It is easily extended. The HTML Formatter will render such code displays with switchable linenumbers, if the browser supports DOM and !JavaScript. A !ParserBase colorization parser understands the following arguments to a `#FORMAT` pi or a hashbang line. Just add those arguments after the name of the parser (`#FORMAT python start=10 step=10 numbering=on` or `#!python numbering=off`). numbers:: if linenumbering should be added. defaults to 'on'. possible values: 'on', 'off' (no linenumbers, but javascript to add them), 'disable' (no line numbers at all) start:: where to start with numbering. defaults to 1 step:: increment to the linenumber. defaults to 1 MoinMoin comes with a few examples from which you can go on: === cplusplus === {{{#!cplusplus int main(int argc, char **argv) { return 0; } }}} === java === {{{#!java import java.util.Date; import java.util.Calendar; public class IntDate { public static Date getDate(String year, String month, String day) { // Date(int, int, int) has been deprecated, so use Calendar to // set the year, month, and day. Calendar c = Calendar.getInstance(); // Convert each argument to int. c.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); return c.getTime(); } } }}} === pascal === {{{#!pascal function TRegEx.Match(const s:string):boolean; var l,i : integer; begin result := MatchPos(s,l,i); end; }}} == python == Colorizes python code. It is not derived from Parser``Basem, but it allows the same arguments as the !ParserBase parsers. {{{#!python def hello(): print "Hello World!" }}} [[Anchor(csvparser)]] == CSV == The CSV parser works on so-called ''comma separated values'', though the comma is now usually a semicolon. The first line is considered to contain column titles that are rendered in '''bold''', so when you don't want table headers, leave the first line empty. The bang path can contain "`-`''index''" arguments, to hide certain columns from the output; column indices are counted starting from 1. Any other argument is treated as the seperator. This allows you to use e.g. commas (`,`) instead of semicolons (`;`). If you do not supply a separator, `;` will be used. See the examples below. /!\ The current code contains a ''very'' simple CSV parser. !MoinMoin 1.3 - clipping of the patch history: {{{#!CSV , -4 patch-366,make _normalize_text public method,Nir Soffer,2004-11-30 19:11:51 GMT patch-367,fixed failing test wikiutil: good system page names,Nir Soffer,2004-11-30 19:15:52 GMT patch-368,Fixed DeprecationWarning in RandomPage.py and an unused import in twistedmoin.py,Alexander Schremmer,2004-11-30 22:58:44 GMT patch-369,remove duplicate code in formatter.base,Thomas Waldmann,2004-12-01 00:14:21 GMT patch-370,fixed long int in mig3,Thomas Waldmann,2004-12-01 01:51:50 GMT patch-371,fixed unicode error on eventlog,Nir Soffer,2004-12-01 14:46:29 GMT patch-372,fixed util.web.makeQueryString and Page.url,Nir Soffer,2004-12-01 15:48:55 GMT patch-373,fixed again non ascii http_referer,Nir Soffer,2004-12-01 18:55:28 GMT patch-374,CSV.py supports different separators now,Alexander Schremmer,2004-12-01 23:46:17 GMT patch-375,improved searchform behavior on Mozilla/Firefox,Nir Soffer,2004-12-02 04:57:06 GMT patch-376,More correct script for actions menu init,Nir Soffer,2004-12-02 05:07:58 GMT }}} MoinMoin Version History: {{{#!CSV -3 Version;Date;HIDDEN! 0.11;2002-03-11;Revision 1.151 0.10;2001-10-28;Revision 1.134 0.9;2001-05-07; 0.8;2001-01-23; 0.7;2000-12-06; 0.6;2000-12-04; 0.5;2000-11-17; 0.4;2000-11-01; 0.3;2000-10-25; 0.2;2000-08-26; 0.1;2000-07-29; }}} == reStructuredText == The reStructuredText parser is experimental. It works well, but many elements are still unsupported. Before you can use it, you need to install the Python docutils package, which provides the additional reStructuredText support that MoinMoin needs. === Supported elements === Emphasis, strong emphasis, inline literal, headers, bullet lists, enumerated lists, definition lists, field lists, literal blocks, and block quotes. And perhaps others. === Unsupported elements === Line blocks, tables, directives, references of all kinds, footnotes, etc. === Example === {{{#!rst This is a *very* simple example. If you see two asterisks around the word "very", in the previous sentence, then docutils is improperly installed (or not installed at all). When 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 as a normal part of the page. }}} === Links === * [http://docutils.sourceforge.net/docs/user/rst/quickref.html Quick reStructuredText] - a.k.a. the reStructuredText cheat-sheet * [http://docutils.sourceforge.net/ The Docutils home page]