Ein Parser interpretiert den rohen Text einer Seite um daraus --über eine Serie von Aufrufen des Formatierers-- die Ausgabe zu erzeugen, die der Benutzer wünscht. Meist ist dies HTML. MoinMoin hat zwei unterschiedliche Wege, um den verwendeten Parser zu wählen:
die #FORMAT-Verarbeitungsanweisungen (siehe HilfeZuVerarbeitungsAnweisungen)
Eine #FORMAT-Verarbeitungsanweisung teilt MoinMoin mit, welchen Parser es für die gesamte Seite verwenden soll. Voreingestellt ist der wiki-Parser. Beispiel:
#FORMAT cplusplus ... C++ Quelltext ...
sogenannte vorformatierte Bereiche (siehe HilfeZumEditieren)
Mit der Hilfe von vorformatierten Bereichen (Quelltextanzeige) ist es möglich, einen Parser nur auf einen Teil einer Seite anzuwenden (früher war dies mit sogenannten Prozessoren möglich). Mit Hilfe eines Hash-Bang #! in der ersten Zeile der Region wird der Parser gewählt. Ein Hash-Bang Pfad in Shell-Skripten dient genau dem selben zweck: er wählt den Interpreter mit dem das Skript interpretiert werden soll. Zum Beispiel:
{{{#!CSV , a,b,c d,e,f }}}
erzeugt die Tabelle:
Bitte beachten Sie, dass es 2 Methoden gibt, Verschachtelungs-Probleme mit }}} zu lösen:
- Benutzen Sie mehr als 3 geschweifte Klammern, um einen Parser-Abschnitt anzufangen bzw. zu beenden (das, was Sie benutzen, darf nicht in dem Parser-Abschnitt enthalten sein). Z.B.:
{{{{ {{{ ... }}} }}}}
- Benutzen Sie 3 geschweifte Klammern + eine einzigartige Zeichenkette:
{{{asdfghj {{{ ... }}} asdfghj}}}
Lesen Sie auch HilfeZumFormatieren für mehr Informationen zum Editieren von Seiten.
ParserBase
ParserBase stellt eine Basisklasse für Parser die Quelltext einfärben da, welche sehr einfach erweitert werden kann. Der HTML Formatierer stellt diese mit optional ein- und ausschaltbaren Zeilennummern da, wenn der Browser des Betrachters DOM und JavaScript unterstützt.
Ein ParserBase Einfärbeparser versteht die folgenden Argumente zu einer #FORMAT Verarbeitungsanweisung oder einer Hash-Bang Zeile. Diese werden einfach, durch Leerzeichen getrennt, hinter dem Namen des Parsers angegeben (#FORMAT python start=10 step=10 numbers=on oder #!python numbers=off).
- numbers
sollen Zeilennummern angezeigt werden? Der Standard ist 'on'. Mögliche Werte: 'on', 'off' (keine Zeilennummern, aber JavaScript falls möglich), 'disable' (überhauptkeine Zeilennummern)
- start
- Startzeilennummer (Standard: 1)
- step
- Inkrement der Zeilennummer (Standard: 1)
MoinMoin hat einige Quelltext-Einfärbe-Parser:
python
Färbt Python Code ein. Dieser Parser ist nicht von ParserBase abgeleitet, stellt aber die selben Argumente zur Verfügung:
def hello():
print "Hello World!"
def hello():
print "Hello World!"
cplusplus
java
1 import java.util.Date;
2 import java.util.Calendar;
3
4 public class IntDate
5 {
6 public static Date getDate(String year, String month, String day)
7 {
8 // Date(int, int, int) has been deprecated, so use Calendar to
9 // set the year, month, and day.
10 Calendar c = Calendar.getInstance();
11 // Convert each argument to int.
12 c.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));
13 return c.getTime();
14 }
15 }
pascal
CSV
Der CSV-Parser arbeitet mit sogenannten kommaseparierten Werten, wobei das Komma heutzutage üblicherweise ein Semikolon ist. Es wird davon ausgegangen, dass die erste Zeile die Titel der Spalten enthält; diese werden fett dargestellt. Wenn man keinen Tabellenkopf benötigt, kann man die erste Zeile leer lassen.
Der bang path kann ein oder mehrere "-index" Argumente enthalten, um die Darstellung bestimmter Spalten in der Ausgabe zu unterdrücken; die Spalten werden beginnend von 1 indiziert.
Ein Argument, das nicht mit - anfängt, bestimmt den Separator - z.B. Kommata (,) statt of Semicolons (;). Wenn Sie keinen Separator angeben, wird ; benutzt.
Der aktuelle CSV-Parser ist sehr schlicht.
Beispiel-Tabellen (bitte schauen Sie in den Quelltext dieser Seite, um das benutzte Markup zu sehen):
MoinMoin 1.3 - Ausschnitt aus der Patch-Historie:
MoinMoin Versionshistorie:
reStructuredText
siehe /ReStructuredText
XML/XSLT/DocBook
siehe HilfeZuXmlSeiten.
Zusätzliche Parser
Für viele weitere Parser und eine Installations-Anleitung siehe ParserMarket.