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
This parser function takes a date and/or time construct and formats it according to the syntax given. A date/time object can be specified; the default is the value of the magic word <tt> </tt> – that is, the time the page was last rendered into HTML.


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

The list of accepted formatting codes is given in the table to the right. Any character in the formatting string that is not recognised is passed through unaltered. There are also two ways to escape characters within the formatting string: In addition, the digraph <tt>xx</tt> is interpreted as a single literal "x".
 * 1) A backslash followed by a formatting character is interpreted as a single literal character
 * 2) characters enclosed in double quotes are considered literal characters, and the quotes are removed


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

The <tt>date/time object</tt> can be in any format accepted by PHP's strtotime function. Both absolute (eg <tt>20 December 2000</tt>) and relative (eg <tt>+20 hours</tt>) times are accepted.

Full or partial absolute dates can be specified; the function will 'fill in' parts of the date that are not specified using the current values:


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

A four-digit number is interpreted as hours and minutes if possible, and otherwise as year:

<tt> </tt> &rarr; ''' Input is treated as a time rather than a year.

<tt> </tt> &rarr; ''' Since 19:60 is not a valid time, 1960 is treated as a year.

A six-digit number is interpreted as hours, minutes and seconds if possible, but otherwise as an error (not, for instance, a year and month):

<tt> </tt> &rarr; ''' Input is treated as a time rather than a year+month code.

<tt> </tt> &rarr; ''' Although 19:60:09 is not a valid time, 196009 is not interpreted as September 1960.

The function performs a certain amount of date mathematics:


 * <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