abcdefpatch-366make _normalize_text public methodNir Sofferpatch-367fixed failing test wikiutil: good system page namesNir Sofferpatch-368Fixed DeprecationWarning in RandomPage.py and an unused import in twistedmoin.pyAlexander Schremmerpatch-369remove duplicate code in formatter.baseThomas Waldmannpatch-370fixed long int in mig3Thomas Waldmannpatch-371fixed unicode error on eventlogNir Sofferpatch-372fixed util.web.makeQueryString and Page.urlNir Sofferpatch-373fixed again non ascii http_refererNir Sofferpatch-374CSV.py supports different separators nowAlexander Schremmerpatch-375improved searchform behavior on Mozilla/FirefoxNir Sofferpatch-376More correct script for actions menu initNir SofferVersionDate0.112002-03-110.102001-10-280.92001-05-070.82001-01-230.72000-12-060.62000-12-040.52000-11-170.42000-11-010.32000-10-250.22000-08-260.12000-07-29<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>AjudaComParsers</title></articleinfo><section><title>Parsers</title><para>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 <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/WikiMoinMoin#">MoinMoin</ulink> escolherá o parser para determinada página utilizando 2 técnicas diferentes: </para><orderedlist numeration="arabic"><listitem><para><emphasis role="strong">Instrução de Processamento FORMAT</emphasis> - ver <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/AjudaComInstru%C3%A7%C3%B5esDeProcessamento#">AjudaComInstruçõesDeProcessamento</ulink> </para><itemizedlist><listitem override="none"><para>Uma PI <code>#FORMAT</code> pode ser utilizada para comunicar ao <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/WikiMoinMoin#">MoinMoin</ulink> qual o parser a utilizar para todo o conteúdo da página. Por omissão, é o parser <emphasis>wiki</emphasis>. Exemplo: {{{#FORMAT cplusplus </para></listitem></itemizedlist></listitem></orderedlist><para>... alguma fonte C++ ... }}} </para><orderedlist numeration="arabic"><listitem><para><emphasis role="strong">Code Display Regions</emphasis> - ver <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/AjudaNaFormata%C3%A7%C3%A3o#">AjudaNaFormatação</ulink> </para><itemizedlist><listitem override="none"><para>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): </para><screen><![CDATA[{ { {#!CSV ,
a,b,c
d,e,f
} } }]]></screen><para>Isto resulta na seguinte tabela: </para><!--RAW HTML: <form action="/wiki/AjudaComParsers" method="GET" name="dbw.form">--><informaltable><tgroup cols="3"><colspec colname="col_0"/><colspec colname="col_1"/><colspec colname="col_2"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><emphasis role="strong"/></entry><entry colsep="1" rowsep="1"><emphasis role="strong"/></entry><entry colsep="1" rowsep="1"><emphasis role="strong"/></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row></tbody></tgroup></informaltable><!--RAW HTML: </form>--></listitem></itemizedlist></listitem></orderedlist><para>Para mais informações sobre a formatação possível, consulte o tópico <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/AjudaNaEdi%C3%A7%C3%A3o#">AjudaNaEdição</ulink>.  </para><section><title>ParserBase</title><para>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. </para><para>Um parser de coloração ParserBase aceita os seguintes argumentos para uma PI <code>#FORMAT</code> ou uma linha hashbang. Adicione esses argumentos depois do nome do parser (<code>#FORMAT python start=10 step=10 numbers=on</code> ou <code>#!python numbers=off</code>). </para><glosslist><glossentry><glossterm>numbers</glossterm><glossdef><para>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) </para></glossdef></glossentry><glossentry><glossterm>start</glossterm><glossdef><para>onde começar a numeração. Por omissão: 1 </para></glossdef></glossentry><glossentry><glossterm>step</glossterm><glossdef><para>incremento ao número da linha. Por omissão: 1 </para></glossdef></glossentry></glosslist><para>O <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/WikiMoinMoin#">MoinMoin</ulink> tem alguns exemplos de onde pode continuar: </para></section><section><title>python</title><para>Colora o código python. Não deriva do ParserBase, mas permite os mesmos argumentos que os parsers ParserBase. </para><programlisting format="linespecific" language="python" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[def]]></token><![CDATA[ ]]><methodname><![CDATA[hello]]></methodname><![CDATA[():]]>
<![CDATA[    ]]><token><![CDATA[print]]></token><![CDATA[ ]]><phrase><![CDATA["]]></phrase><phrase><![CDATA[Hello World!]]></phrase><phrase><![CDATA["]]></phrase>
</programlisting><programlisting format="linespecific" language="python" linenumbering="unnumbered" startinglinenumber="1"><token><![CDATA[def]]></token><![CDATA[ ]]><methodname><![CDATA[hello]]></methodname><![CDATA[():]]>
<![CDATA[    ]]><token><![CDATA[print]]></token><![CDATA[ ]]><phrase><![CDATA["]]></phrase><phrase><![CDATA[Hello World!]]></phrase><phrase><![CDATA["]]></phrase>
</programlisting><programlisting format="linespecific" language="python" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[def]]></token><![CDATA[ ]]><methodname><![CDATA[hello]]></methodname><![CDATA[():]]>
<![CDATA[    ]]><token><![CDATA[print]]></token><![CDATA[ ]]><phrase><![CDATA["]]></phrase><phrase><![CDATA[Hello World!]]></phrase><phrase><![CDATA["]]></phrase>
</programlisting></section><section><title>cplusplus</title><programlisting format="linespecific" language="cpp" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[int]]></token><![CDATA[ ]]><methodname><![CDATA[main]]></methodname><![CDATA[(]]><token><![CDATA[int]]></token><![CDATA[ ]]><methodname><![CDATA[argc]]></methodname><![CDATA[, ]]><token><![CDATA[char]]></token><![CDATA[ **]]><methodname><![CDATA[argv]]></methodname><![CDATA[) {]]>
<![CDATA[  ]]><token><![CDATA[return]]></token><![CDATA[ 0;]]>
<![CDATA[}]]>
</programlisting></section><section><title>java</title><programlisting format="linespecific" language="java" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[import]]></token><![CDATA[ ]]><methodname><![CDATA[java.util.Date]]></methodname><![CDATA[;]]>
<token><![CDATA[import]]></token><![CDATA[ ]]><methodname><![CDATA[java.util.Calendar]]></methodname><![CDATA[;]]>

<token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[class]]></token><![CDATA[ ]]><methodname><![CDATA[IntDate]]></methodname>
<![CDATA[{]]>
<![CDATA[  ]]><token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[static]]></token><![CDATA[ ]]><methodname><![CDATA[Date]]></methodname><![CDATA[ ]]><methodname><![CDATA[getDate]]></methodname><![CDATA[(]]><methodname><![CDATA[String]]></methodname><![CDATA[ ]]><methodname><![CDATA[year]]></methodname><![CDATA[, ]]><methodname><![CDATA[String]]></methodname><![CDATA[ ]]><methodname><![CDATA[month]]></methodname><![CDATA[, ]]><methodname><![CDATA[String]]></methodname><![CDATA[ ]]><methodname><![CDATA[day]]></methodname><![CDATA[)]]>
<![CDATA[    {]]>
<![CDATA[      ]]><lineannotation><![CDATA[// Date(int, int, int) está obsoleto, por isso utilize Calendar para]]></lineannotation>
<lineannotation></lineannotation><![CDATA[      ]]><lineannotation><![CDATA[// definir o ano, mês e dia.]]></lineannotation>
<lineannotation></lineannotation><![CDATA[      ]]><methodname><![CDATA[Calendar]]></methodname><![CDATA[ ]]><methodname><![CDATA[c]]></methodname><![CDATA[ = ]]><methodname><![CDATA[Calendar]]></methodname><![CDATA[.]]><methodname><![CDATA[getInstance]]></methodname><![CDATA[();]]>
<![CDATA[      ]]><lineannotation><![CDATA[// Converta cada argumento para int.]]></lineannotation>
<lineannotation></lineannotation><![CDATA[      ]]><methodname><![CDATA[c]]></methodname><![CDATA[.]]><methodname><![CDATA[set]]></methodname><![CDATA[(]]><methodname><![CDATA[Integer]]></methodname><![CDATA[.]]><methodname><![CDATA[parseInt]]></methodname><![CDATA[(]]><methodname><![CDATA[year]]></methodname><![CDATA[),]]><methodname><![CDATA[Integer]]></methodname><![CDATA[.]]><methodname><![CDATA[parseInt]]></methodname><![CDATA[(]]><methodname><![CDATA[month]]></methodname><![CDATA[),]]><methodname><![CDATA[Integer]]></methodname><![CDATA[.]]><methodname><![CDATA[parseInt]]></methodname><![CDATA[(]]><methodname><![CDATA[day]]></methodname><![CDATA[));]]>
<![CDATA[      ]]><token><![CDATA[return]]></token><![CDATA[ ]]><methodname><![CDATA[c]]></methodname><![CDATA[.]]><methodname><![CDATA[getTime]]></methodname><![CDATA[();]]>
<![CDATA[    }]]>
<![CDATA[}]]>
</programlisting></section><section><title>pascal</title><programlisting format="linespecific" language="pascal" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[function]]></token><![CDATA[ ]]><methodname><![CDATA[TRegEx]]></methodname><![CDATA[.]]><methodname><![CDATA[Match]]></methodname><![CDATA[(]]><token><![CDATA[const]]></token><![CDATA[ ]]><methodname><![CDATA[s]]></methodname><![CDATA[:]]><token><![CDATA[string]]></token><![CDATA[):]]><token><![CDATA[boolean]]></token><![CDATA[;]]>
<token><![CDATA[var]]></token>
<![CDATA[    ]]><methodname><![CDATA[l]]></methodname><![CDATA[,]]><methodname><![CDATA[i]]></methodname><![CDATA[ : ]]><token><![CDATA[integer]]></token><![CDATA[;]]>
<token><![CDATA[begin]]></token>
<![CDATA[    ]]><token><![CDATA[result]]></token><![CDATA[ := ]]><methodname><![CDATA[MatchPos]]></methodname><![CDATA[(]]><methodname><![CDATA[s]]></methodname><![CDATA[,]]><methodname><![CDATA[l]]></methodname><![CDATA[,]]><methodname><![CDATA[i]]></methodname><![CDATA[);]]>
<token><![CDATA[end]]></token><![CDATA[;]]>
</programlisting></section><section><title>IRC</title><para>Coloca um registo de IRC numa tabela. </para><programlisting format="linespecific" language="irc" linenumbering="numbered" startinglinenumber="1"><![CDATA[(23:18) ]]><methodname><![CDATA[<     jroes> ]]></methodname><![CDATA[ah]]>
<![CDATA[(23:19) ]]><methodname><![CDATA[<     jroes> ]]></methodname><![CDATA[hm, gosto da forma como as {{{ funcionam, mas esperava que as linhas se reajustassem]]>
<![CDATA[(23:21) ]]><token><![CDATA[-!- ]]></token><phrase><![CDATA[gpciceri ]]></phrase><lineannotation><![CDATA[[~gpciceri@host181-130.pool8248.interbusiness.it] has quit [Read error: 110 (Connection timed out)]]]></lineannotation>
<lineannotation></lineannotation><![CDATA[(23:36) ]]><methodname><![CDATA[< ThomasWal> ]]></methodname><![CDATA[podes tb escrever um parser ou um processador]]>
<![CDATA[(23:38) ]]><methodname><![CDATA[<     jroes> ]]></methodname><![CDATA[posso?]]>
<![CDATA[(23:38) ]]><methodname><![CDATA[<     jroes> ]]></methodname><![CDATA[é preciso alterar moin?]]>
<![CDATA[(23:38) ]]><methodname><![CDATA[<     jroes> ]]></methodname><![CDATA[eu não posso alterá-lo :x]]>
</programlisting><para><anchor id="csvparser"/> </para></section><section><title>CSV</title><para>O parser CSV funciona com os <emphasis>valores separados por vírgulas</emphasis>, 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 <emphasis>negrito</emphasis>. Assim, caso não queira cabeçalhos nas tabelas, deixe a primeira linha vazia. </para><para>O caminho bang pode conter argumentos &quot;<code>-</code><emphasis>index</emphasis>&quot;, cada qual esconde uma determinada coluna do resultado, os índices de colunas são contados a partir do 1. </para><para>Qualquer um argumento non-whitespace que não comece com um <code>-</code> significa um separador. Isto permite-lhe utilizar vírgulas (<code>,</code>) em vez de ponto e vírgula (<code>;</code>), por exemplo. Se não indicar um separador, o <code>;</code> será utilizado. </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata depth="16" fileref="http://research.math.uvt.ro/wiki//static/moniker/img/alert.png" width="16"/></imageobject><textobject><phrase>/!\</phrase></textobject></inlinemediaobject> O código do parser CSV incluído actualmente é <emphasis>muito</emphasis> simples. </para></listitem></itemizedlist><para>Tabelas de exemplo (por favor veja o texto sem formato desta página para a formatação utilizada):  </para><para>MoinMoin 1.3 - a listar o histórico de patches: </para><!--RAW HTML: <form action="/wiki/AjudaComParsers" method="GET" name="dbw.form">--><informaltable><tgroup cols="3"><colspec colname="col_0"/><colspec colname="col_1"/><colspec colname="col_2"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><emphasis role="strong"/></entry><entry colsep="1" rowsep="1"><emphasis role="strong"/></entry><entry colsep="1" rowsep="1"><emphasis role="strong"/></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row></tbody></tgroup></informaltable><!--RAW HTML: </form>--><para>Histórico da Versão do <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/MoinMoin#">MoinMoin</ulink>: </para><!--RAW HTML: <form action="/wiki/AjudaComParsers" method="GET" name="dbw.form">--><informaltable><tgroup cols="2"><colspec colname="col_0"/><colspec colname="col_1"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><emphasis role="strong"/></entry><entry colsep="1" rowsep="1"><emphasis role="strong"/></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row><row rowsep="1"><entry colsep="1" rowsep="1"/><entry colsep="1" rowsep="1"/></row></tbody></tgroup></informaltable><!--RAW HTML: </form>--></section><section><title>reStructuredText</title><para>Ver <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/AjudaComParsers/ReStructuredText#">/ReStructuredText</ulink> </para></section><section><title>XML/XSLT/DocBook</title><para>Ver <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/AjudaComP%C3%A1ginasXml#">AjudaComPáginasXml</ulink> <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/HelpOnXmlPages#">HelpOnXmlPages</ulink>. </para></section><section><title>Outros Parsers</title><para>Para ver mais parsers e instruções de instalação, consulte o tópico <ulink url="http://research.math.uvt.ro/wiki/AjudaComParsers/wiki/MoinMoin%3AParserMarket#">Mercado de Parsers</ulink>. </para></section></section></article>