Processori di codice

Oltre alla marcatura predefinita di MoinMoin, esistono diversi processori che consentono di interpretare il contenuto di una pagina o parte del contenuto in modo differente. Un wiki MoinMoin utilizza solitamente il processore predefinito, come descritto in AiutoSuFormattazione.

<<TableOfContents: échec de l'exécution [list index out of range] (consultez également le journal de bord)>>

Come viene applicata la formattazione

I processori di codice elaborano il contenuto di una pagina per creare una serie di chiamate al formattatore il quale crea a sua volta un output leggibile. MoinMoin sceglie il processore di codice utilizzando due tecniche:

  1. Istruzione di elaborazione FORMAT (consultare AiutoSuIstruzioniDiElaborazione)

    Un'istruzione di elaborazione #FORMAT può essere usata per indicare a MoinMoin quale processore di codice usare per l'intera pagina. Quello predefinito è quello wiki, per esempio:

    #FORMAT cplusplus
    ... some C++ source ...
  2. Regioni di visualizzazione di codice (consultare AiutoSuFormattazione)

    Attraverso l'uso di regioni di visualizzazione di codice, un processore di codice può essere applicato a una sola parte di una pagina. È possibile quale processore di codice usare utilizzando un cosiddetto percorso bang (hashbang) all'inizio della pagina. Un percorso bang è un concetto derivato dagli script a riga di comando Unix, dove svogle la stessa funzione: la prima riga indica quale programma avviare per elaborare le restanti righe dello script. Per esempio, il codice:

    {{{#!CSV ,
    a,b,c
    d,e,f
    }}}

    crea la tabella:

    a b c
    d e f

(!) Esistono due modi per risolvere il problema delle }}} annidate:

Per maggiori informazioni sulla marcatura, consultare AiutoSuModificaPagina.

ParserBase

ParserBase è una classe usata per creare visualizzazioni colorate di codice sorgente ed è facilmente estendibile. Il formattatore HTML visualizzerà quel codice con la possibilità di attivare/disattivare i numeri riga (se il browser supporto DOM e JavaScript).

Un processore ParserBase è in gradi di comprendere i seguenti argomenti nella riga #FORMAT o nello hashbang. Aggiungere uno dei seguenti argomenti dopo il nome del processore di codice (#FORMAT python start=10 step=10 numbers=on oppure #!python numbers=off).

numbers

Indica se aggiungere i numeri riga, il valore predefinito è "on". I possibili valori sono: "on", "off" (nessun numero, ma viene usato JavaScript), "disable" (nessun numero).

start
Indica dove iniziare la numerazione, il valore predefinito è "1".
step
Incremento alla numerazione, il valore predefinito è "1".

MoinMoin dispone di alcuni esempi:

Creole

Consultare AiutoSuSintassiCreole.

Python

Colora il codice Python. Non è derivato da ParserBase, ma accetta gli stessi argomenti dei processori basati su ParserBase

   1 def hello():
   2     print "Ciao mondo!"

def hello():
    print "Ciao mondo!"

def hello():
    print "Ciao mondo!"

C++

   1 int main(int argc, char **argv) {
   2   return 0;
   3 }

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

   1 function TRegEx.Match(const s:string):boolean;
   2 var
   3     l,i : integer;
   4 begin
   5     result := MatchPos(s,l,i);
   6 end;

IRC

Inserisce la registrazione IRC in una tabella.

   1 (23:18) <     jroes> ah
   2 (23:21) -!- gpciceri [~gpciceri@host181-130.pool8248.interbusiness.it] has quit [Read error: 110 (Connection timed out)]
   3 (23:36) < ThomasWal> you could also write a parser or processor
   4 (23:38) <     jroes> i could?
   5 (23:38) <     jroes> would that require modification on the moin end though?
   6 (23:38) <     jroes> i cant change the wiki myself :x

Il formato della registrazione è quello di IRSSI, un cline IRC molto famoso, ma dovrebbe funzionare con le registrazioni di molti client IRC.

CSV

Il processore CSV lavoro con i valori separati da virgole, anche se la virgola ora risulta essere un punto e virgola. La prima riga dovrebbe contenere i nomi delle colonne, che vengono rese in grassetto, così per non avere le intestazioni delle tabelle, lasciare la prima riga vuota.

Il percorso bang può contenere i seguenti argomenti:

Il processore supporta anche la vecchia sintassi, anche se deprecata.

Tabelle di esempio (consultare il testo grezzo per vedere la marcatura usata):

MoinMoin 1.3, scorcio della cronologia della patch:

patch-366 make _normalize_text public method Nir Soffer
patch-367 fixed failing test wikiutil: good system page names Nir Soffer
patch-368 Fixed DeprecationWarning in RandomPage.py and an unused import in twistedmoin.py Alexander Schremmer
patch-369 remove duplicate code in formatter.base Thomas Waldmann
patch-370 fixed long int in mig3 Thomas Waldmann
patch-371 fixed unicode error on eventlog Nir Soffer
patch-372 fixed util.web.makeQueryString and Page.url Nir Soffer
patch-373 fixed again non ascii http_referer Nir Soffer
patch-374 CSV.py supports different separators now Alexander Schremmer
patch-375 improved searchform behavior on Mozilla/Firefox Nir Soffer
patch-376 More correct script for actions menu init Nir Soffer

Cronologia versioni MoinMoin:

Version Date
0.11 2002-03-11
0.10 2001-10-28
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

Consultare /ReStructuredText.

XML/XSLT/DocBook

Consultare AiutoSuPagineXml.

Processori di codice aggiuntivi

Per maggiori informazioni, consultare ParserMarket.