Help:Extension:ParserFunctions/pt

= Funções adicionais do analisador sintáctico = Se a extensão foi instalada na sua wiki, ela fornece dez funções adicionais ao analisador sintáctico, que suplementam as palavras mágicas já presentes no MediaWiki. Todas as funções fornecidas pela extensão têm a forma:
 *  

#expr

 *  

Esta função calcula a expressão matemática e retorna o resultado. Portanto:


 *   &rarr; 

Os operadores matemáticos disponíveis estão listados na tabela da direita, por ordem crescente de precedência. Para mais detalhes sobre cada operador, consulte.

A precisão e formato do resultado variam de acordo com o sistema operativo do servidor que está a executar o MediaWiki e com o formato numérico da língua do site.

Nos operadores de lógica Booleana, o número zero assume o valor lógico «falso» (0) e qualquer outro número, positivo ou negativo, assume o valor lógico «verdadeiro» (1):


 *   &rarr; 
 *   &rarr; 
 *   &rarr; 
 *  </tt> &rarr; 

Uma expressão de entrada vazia retorna uma expressão de saída vazia:


 *  </tt> &rarr;  

Expressões inválidas retornam uma ou várias mensagens de erro, que podem ser apanhadas usando a função #iferror</tt>:


 *  </tt> &rarr; 
 *  </tt> &rarr; 

Algumas expressões podem resultar em erros de vírgula flutuante (floating-point) quando são usados números muito grandes ou muito pequenos:


 *  </tt> &rarr; 

retorna 3259 na maioria das vezes, mas ocasionalmente retorna -6357. Isto varia com as especificações e a configuração do servidor que executa a wiki (ver ).

#if

 *  </tt>

Esta função determina se a expressão tem conteúdo ou está vazia. Se tem conteúdo, retorna o valor se verdadeiro</tt>. Se está vazia, ou só contém caracteres em branco (espaços, nova linhas, etc.), retorna o valor se falso</tt>.


 *  </tt> &rarr; 
 *  </tt> &rarr; 
 *  </tt> &rarr; 
 *  </tt> &rarr; 

A expressão é sempre interpretada como texto puro, portanto expressões matemáticas não são calculadas:


 *  </tt> &rarr; 

Qualquer um dos valores a retornar, ou ambos, podem ser omitidos:


 *  </tt> &rarr;  
 *  </tt> &rarr;  
 * <tt> </tt> &rarr;  

Para mais exemplos do uso desta função, consulte funções do analisador sintáctico nas predefinições.

#ifeq

 * <tt> </tt>

Esta função determina se as duas expressões são idênticas.

Se ambas resultarem em valores numéricos válidos, são comparadas numericamente:


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

Caso contrário, são comparadas como texto:


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

A comparação de texto é sensível a maiúsculas e minúsculas:


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 


 * <tt> </tt> &rarr;  
 * <tt> </tt> &rarr;  

Se uma expressão resulta em texto e a outra num número, é sempre retornado o <tt>valor se falso</tt>:


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

O uso de elementos sintácticos nas expressões, (como <tt>  </tt>), resulta em erro:


 * <tt> </tt> &rarr;  
 * <tt> </tt> &rarr;  

#iferror

 * <tt> </tt>

Esta função determina se ocorre um erro no cálculo da expressão. Se ocorrer um erro, retorna o <tt>valor se verdadeiro</tt>. Se não, retorna o <tt>valor se falso</tt>.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 
 * porque <tt> </tt> &rarr; 

Um erro ocorre quando o resultado do cálculo contém um objecto HTML com <tt>class="error"</tt>. Este objecto pode ser gerado por outras funções do analisador sintáctico, como <tt>#expr</tt>, <tt>#time</tt> e <tt>#rel2abs</tt>, por erros em predefinições como ciclos e recursão, ou por outros erros (failsoft) detectados pelo analisador sintáctico.

Qualquer um dos valores a retornar, ou ambos, podem ser omitidos. Se for omitido o <tt>valor se falso</tt> e não ocorrer um erro, é retornado o resultado da <tt>expressão</tt>.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

Se também for omitido o <tt>valor se verdadeiro</tt> e ocorrer um erro, é retornada uma expressão vazia:


 * <tt> </tt> &rarr;  
 * <tt> </tt> &rarr;  

#ifexpr

 * <tt> </tt>

Esta função determina se a expressão matemática é diferente de zero. Primeiro, calcula a expressão da mesma forma que <tt>#expr</tt> acima, com os mesmos operadores. O resultado numérico do cálculo é então avaliado com lógica Booleana. Portanto, se for diferente de zero, retorna <tt>valor se verdadeiro</tt>. Se for zero, retorna <tt>valor se falso</tt>.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

O inverso desta função pode ser obtido com <tt>#ifeq</tt>, comparando <tt>#expr</tt> com zero:


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

Uma expressão de entrada vazia retorna o <tt>valor se falso</tt>:


 * <tt> </tt> &rarr; 

Qualquer um dos valores de retorno, ou ambos, podem ser omitidos. Se o valor de retorno for omitido, é retornada uma expressão vazia:


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr;  


 * <tt> </tt> &rarr;  
 * <tt> </tt> &rarr;  


 * <tt> </tt> &rarr;  
 * <tt> </tt> &rarr;  

#ifexist

 * <tt> </tt>

Esta função determina se a página especificada existe na wiki.

A função retorna o <tt>valor se verdadeiro</tt> se a página existir, quer tenha conteúdo, esteja visivelmente vazia (isto é, contenha metadados como ligações de categorias ou palavras mágicas, mas nenhum conteúdo visível), esteja efectivamente vazia, ou seja uma página de redireccionamento. Só para páginas cuja ligação estaria a vermelho é retornado o <tt>valor se falso</tt>, incluíndo páginas qua já existiram mas tenham sido eliminadas.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

A função retorna o <tt>valor se verdadeiro</tt> para mensagens de sistema que tenham sido alteradas na wiki e para páginas especiais que existam.


 * <tt> </tt> &rarr;
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr;

A função <tt>#ifexist</tt> é considerada «exigente» e só um número limitado destas funções pode ser colocado numa página (incluindo funções dentro de páginas transcluídas nessa página). Quando este número é excedido, a página é colocada na categoria Category:, e quaisquer funções <tt>#ifexist:</tt> que ainda restem executar, retornam automaticamente o <tt>valor se falso</tt> quer a sua página alvo exista ou não.

Se uma página verifica a existência de outra página alvo usando <tt>#ifexist:</tt>, então a página que verifica aparece na lista    : da página alvo. Portanto, se o código <tt> </tt> existir ao vivo nesta página, então     :/Xpto listará «».

Nas wikis que usam um repositório partilhado de ficheiros multimédia, <tt>#ifexist</tt> pode ser usado para verificar se um ficheiro foi carregado no repositório, mas não na própria wiki:


 * <tt> </tt>  &rarr; 
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

Se tiver sido criada uma página de descrição do ficheiro, é retornado o <tt>valor se verdadeiro</tt> para todas as entradas acima.

#rel2abs

 * <tt> </tt>
 * <tt> </tt>

Esta função cria um endereço completo, para uma página ou para um ficheiro, com base num deslocamento relativo a partir de um endereço base. No parâmetro de entrada <tt>deslocamento relativo</tt>, os seguintes são válidos:
 * <tt>.</tt> - o nível actual
 * <tt>..</tt> - subir um nível
 * <tt>/xpto</tt> - descer um nível para o sub-directório <tt>/xpto</tt>

Assim:


 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''

Se o parâmetro <tt>endereço base</tt> não for especificado, será usado o nome completo da página:


 * <tt> </tt> &rarr; '''

Sintaxe inválida, como <tt>/.</tt> ou <tt>/./</tt>, é ignorada.


 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''

#switch

 * <tt> </tt>

Esta função faz uma comparação entre <tt>texto</tt> e cada um dos casos de teste, e retorna o <tt>valor</tt> associado ao <tt>caso</tt> que seja igual ao <tt>texto</tt>:


 * <tt> </tt> &rarr; 

Se não for encontrada nenhuma correspondência, é retornado o <tt>valor por omissão</tt>:


 * <tt> </tt> &rarr; 

Nesta forma, o <tt>valor por omissão</tt> tem de ser o último parâmetro e não pode conter um sinal de igual (<tt>=</tt>):


 * <tt> </tt> &rarr;   

Em alternativa, o <tt>valor por omissão</tt> pode ser declarado explicitamente usando <tt>#default</tt> como caso; desta forma, pode ser colocado em qualquer posição:


 * <tt> </tt> &rarr; 

Se o <tt>valor por omissão</tt> for omitido e não for encontrada nenhuma correspondência, não é retornado nenhum valor:


 * <tt> </tt> &rarr;   

Quando vários casos têm o mesmo <tt>valor</tt>, em vez de repetir esse valor para todos eles, é possível agrupá-los, da seguinte forma:


 * <tt> </tt>

Aqui, os casos 2 e 3 retornam o <tt>valor2</tt>; os casos 4, 9 e 6 retornam o <tt>valor3</tt>.

Tal como <tt>#ifeq</tt>, a comparação é feita numericamente se tanto o <tt>texto</tt> como o <tt>caso</tt> forem números. Se não, são comparados como texto, sensível a maiúsculas e minúsculas:


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

Um <tt>caso</tt> pode ser o vazio:


 * <tt> </tt> &rarr; 

Se dois ou mais casos forem iguais, só o primeiro será retornado:


 * <tt> </tt> &rarr; 

Os casos não podem conter sinais de igual (<tt>=</tt>). É possível inserir sinais de igual se criar uma predefinição = que contenha unicamente um sinal de igual: <tt>=</tt>. Depois, pode transcluir a predefinição desta forma:


 * <tt> </tt> &rarr; 

#time

 * <tt> </tt>
 * <tt> </tt>

Esta função formata uma data e/ou hora de acordo com a sintaxe fornecida. Por omissão, será usada a palavra mágica <tt> </tt>, isto é, a hora da última vez em que a página foi apresentada em HTML.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

Pode ser especificado um objecto <tt>data/hora</tt>:


 * <tt> </tt> &rarr; 

A lista de códigos de formatação válidos é apresentada na tabela da direita. Qualquer carácter no texto de formatação que não seja reconhecido, é passado inalterado para o resultado. Existem duas formas de escapar caracteres no texto de formatação, impedindo que sejam interpretados:


 * Uma barra invertida (<tt>\</tt>) seguida de um carácter de formatação são interpretados como o carácter literal, sem formatação.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 


 * Caracteres envolvidos em aspas duplas (<tt>"</tt>) são considerados caracteres literais e não de formatação, e as aspas são removidas no resultado. Adicionalmente, o dígrafo (dois caracteres interpretados como um só) <tt>xx</tt> é intrepretado como o carácter literal <tt>x</tt>.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 


 * <tt> </tt> &rarr; 

O objecto <tt>data/hora</tt> pode ter qualquer formato aceite pela função strtotime do PHP. São aceites objectos absolutos (<tt>20 December 2000</tt>) e relativos (<tt>+20 hours</tt>).

A gama de datas aceites é desde 1 de Janeiro de 0100 até 31 de Dezembro de 9999. Valores fora desta gama serão interpretados incorrectamente:


 * <tt> </tt> &rarr; '''


 * <tt> </tt> &rarr; '''

Datas absolutas podem ser especificadas de forma completa ou parcial; a função preenche as partes que não tenham sido especificadas usando os valores actuais:


 * <tt> </tt> &rarr; '''

Um número de quatro algarismos é interpretado como horas e minutos, se possível, e como um ano, se não:


 * <tt> </tt> &rarr; '''
 * (1959 é considerado uma hora e não um ano)
 * <tt> </tt> &rarr; '''
 * (como 19:60 não é uma hora válida, 1960 é considerado um ano)

Um número de seis algarismos é interpretado como horas, minutos e segundos, se possível, e como um erro, se não (não é nunca tratado, por exemplo, como ano e mês):


 * <tt> </tt> &rarr; '''
 * (195909 é considerado uma hora e não ano + mês)
 * <tt> </tt> &rarr; '''
 * (embora 19:60:09 não seja uma hora válida, 196009 não é interpretado como Setembro de 1960)

A funcionalidade de preenchimento de datas parciais não é consistente; algumas partes são preenchidas usando valores actuais, outras não:


 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''
 * (vai para o início do mês, não para o dia actual)

A função faz alguns cálculos matemáticos:


 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''
 * <tt> </tt> &rarr; '''

#timel
This function is identical to <tt> </tt>, except that it uses the local time of the wiki (as set in ) when no date is given.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

#titleparts
This function separates a pagetitle into segments based on slashes, then returns some of those segments as output.


 * <tt> </tt>

If the <tt>number of segments</tt> parameter is not specified, it defaults to "0", which returns all the segments. If the <tt>first segment</tt> parameter is not specified or is "0", it defaults to "1":


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

Negative values are accepted for both values. Negative values for <tt>number of segments</tt> effectively 'strips' segments from the end of the string. Negative values for <tt>first segment</tt> translates to "add this value to the total number of segments", loosely equivalent to "count from the right":


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr;  
 * <tt> </tt> &rarr;   Strips one segment from the end of the string, then returns the second segment and beyond

The string is split a maximum of 25 times; further slashes are ignored. The string is also limited to 255 characters, as it is treated as a page title:


 * <tt> </tt> &rarr; 

You can use #titleparts as a small "string parser & converter", but consider that it returns the first substring capitalized. If lower case is needed, use lc: function to control output.


 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 
 * <tt> </tt> &rarr; 

Substitution
Parser functions can be substituted by prefixing the hash character with <tt>subst:</tt>:


 * <tt> </tt> &rarr; the code <tt>    </tt> will be inserted in the wikitext since the page  exists.

Tables
Parser functions will mangle wikitable syntax, treating all the raw pipe characters as parameter divisors. To avoid this, most wikis create the template    :! with its contents only a raw pipe character. This 'hides' the pipe from the MediaWiki parser, ensuring that it is not considered until after all the templates and variables on a page have been expanded. Alternatively, raw HTML table syntax can be used, although this is less intuitive and more error-prone.

Stripping whitespace
Whitespace, including newlines, tabs, and spaces, is stripped from the beginning and end of all the parameters of these parser functions. If this is not desirable, adding any non-whitespace characters (including the HTML encoding for a whitespace character, invisible Unicode characters such as the zero-width space or direction marks, or sequences recognised and stripped by the MediaWiki parser such as <tt>  </tt>) will prevent further stripping:


 * &rarr; 


 * &rarr; 


 * &rarr; 

Ver também

 * :Palavras mágicas
 * :Funções do analisador sintáctico em predefinições