Wiki Page Content

Parsers

Os parsers percorrem o conteúdo de um página para criar uma sequência de chamadas de formatação, que em sequência criam algum resultado legível. O MoinMoin escolherá o parser para determinada página utilizando 2 técnicas diferentes:

  1. Instrução de Processamento FORMAT - ver AjudaComInstruçõesDeProcessamento

    • Uma PI #FORMAT pode ser utilizada para comunicar ao MoinMoin qual o parser a utilizar para todo o conteúdo da página. Por omissão, é o parser wiki. Exemplo: {{{#FORMAT cplusplus

... alguma fonte C++ ... }}}

  1. Code Display Regions - ver AjudaNaFormatação

    • Com a utilização de code display regions, um parser pode ser aplicado em apenas uma parte de uma página (isto era um processador de regiões em versões anteriores do Moin). Pode especificar qul o parser a chamar utilizando um caminho do tipo bang na primeira linha. Um caminho do tipo bang é um conceito que surgiu dos scripts da linha de comando do Unix, que servem esse mesmo propósito: a primeira linha indica à shell qual o programa a utilizar para processar as restantes linhas do script. Exemplo (por favor, remova os espaços entre as chavetas para activar o parser):

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

      Isto resulta na seguinte tabela:

      a b c
      d e f

Para mais informações sobre a formatação possível, consulte o tópico AjudaNaEdição.

ParserBase

O ParserBase é uma classe de ferramentas do parser utilizada para criar apresentações de fonte colorida. É facilmente extensível. O formatador de HTML converterá o código apresentado com a numeração de linhas adequada, se o navegador suportar DOM e JavaScript.

Um parser de coloração ParserBase aceita os seguintes argumentos para uma PI #FORMAT ou uma linha hashbang. Adicione esses argumentos depois do nome do parser (#FORMAT python start=10 step=10 numbers=on ou #!python numbers=off).

numbers
se o número de linhas for adicionada. Por omissão: 'on'. Valores possíveis: 'on', 'off' (sem numeração de linhas, mas o javascript adiciona-as), 'disable' (sem numeração de linhas de todo)
start
onde começar a numeração. Por omissão: 1
step
incremento ao número da linha. Por omissão: 1

O MoinMoin tem alguns exemplos de onde pode continuar:

python

Colora o código python. Não deriva do ParserBase, mas permite os mesmos argumentos que os parsers ParserBase.

   1 def hello():
   2     print "Hello World!"

def hello():
    print "Hello World!"

def hello():
    print "Hello World!"

cplusplus

   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) está obsoleto, por isso utilize Calendar para
   9       // definir o ano, mês e dia.
  10       Calendar c = Calendar.getInstance();
  11       // Converta cada argumento para 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

Coloca um registo de IRC numa tabela.

   1 (23:18) <     jroes> ah
   2 (23:19) <     jroes> hm, gosto da forma como as {{{ funcionam, mas esperava que as linhas se reajustassem
   3 (23:21) -!- gpciceri [~gpciceri@host181-130.pool8248.interbusiness.it] has quit [Read error: 110 (Connection timed out)]
   4 (23:36) < ThomasWal> podes tb escrever um parser ou um processador
   5 (23:38) <     jroes> posso?
   6 (23:38) <     jroes> é preciso alterar moin?
   7 (23:38) <     jroes> eu não posso alterá-lo :x

CSV

O parser CSV funciona com os valores separados por vírgulas, embora a vírgula seja normalmente e por omissão um ponto e vírgula. A primeira linha deve conter os títulos das colunas que são convertidas a negrito. Assim, caso não queira cabeçalhos nas tabelas, deixe a primeira linha vazia.

O caminho bang pode conter argumentos "-index", cada qual esconde uma determinada coluna do resultado, os índices de colunas são contados a partir do 1.

Qualquer um argumento non-whitespace que não comece com um - significa um separador. Isto permite-lhe utilizar vírgulas (,) em vez de ponto e vírgula (;), por exemplo. Se não indicar um separador, o ; será utilizado.

  • /!\ O código do parser CSV incluído actualmente é muito simples.

Tabelas de exemplo (por favor veja o texto sem formato desta página para a formatação utilizada):

MoinMoin 1.3 - a listar o histórico de patches:

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

Histórico da Versão do 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

Ver /ReStructuredText

XML/XSLT/DocBook

Ver AjudaComPáginasXml HelpOnXmlPages.

Outros Parsers

Para ver mais parsers e instruções de instalação, consulte o tópico Mercado de Parsers.