Ajuda:Funções sintáticas
| Guia de edição |
|---|
Esta extensão do MediaWiki é uma coleção de funções de análise sintática (em inglês: ParserFunctions), que verificam a "estrutura gramatical" de um argumento seguindo os padrões de uma gramática formal computacional. Essas funções possuem uma cerquilha (#) na frente de seus nomes, adquirindo a seguinte sintaxe:
{{#nomedafunção: argumento 1 | argumento 2 | argumento 3...}}
Funções
[editar | editar código]#expr:
[editar | editar código]| Tipo | Operadores |
|---|---|
| Agrupamento (parênteses) | ( ) |
| Números | 1234.5 2.4E5 e (2.718) pi (3.142)
|
| Lógicos | or |
| and | |
| = != <> > < <= >= | |
| Arredondamento | round |
| Binários | + - mod |
| * / div | |
^
| |
| Unários | not ceil trunc floor abs ln sin cos tan acos asin atan |
| e + - |
A função#exprpossui a sintaxe:
{{#expr: expressão matemática }}
A função #expr realiza cálculos matemáticos em expressões de permutação de números (ou parâmetros que resultam em números) e operadores. Ela não funciona com strings (cadeias de caracteres / texto); para tal propósito, use a função ifeq. Portanto:
{{#expr: 1 + 1 }}→ 2
Segue abaixo uma lista de operadores suportados nesta função. Para maiores detalhes sobre a precedência de operadores (ordem em que devem ser realizadas as operações) veja m:Help:Calculation. De maneira geral: (1) grupos (entre parênteses), (2) unários (sinais +/- e NOT lógico), (3) multiplicativo (*, /, div, mod), (4) aditivo (+ e -), (5) round, (6) comparativo (=, !=, <, >, etc.), (7) AND lógico, (8) OR lógico. Quando existirem operadores com a mesma classe de precedência, os cálculos são resolvidos da esquerda para a direita. Como sempre, alguns parênteses apesar de redundantes, são melhores do que um código conciso porém errado.
Números utilizam "." (ponto) como símbolo decimal. A função formatnum: pode ser utilizada para mudar o ponto decimal para uma vírgula nos países e locais onde isto for apropriado.
A notação científica com E mais expoente ainda não é suportada como entrada de expressões, mas é utilizada nos resultados (para maiores detalhes veja m:Help:Calculation).
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):
{{#expr: 0 and 0 }}→ 0{{#expr: 0 and 1 }}→ 0{{#expr: -1 and 0 }}→ 0{{#expr: 2 and -2 }}→ 1
Uma expressão de entrada vazia retorna uma expressão com resultado vazio:
{{#expr: }}→
Expressões inválidas retornam uma ou várias mensagens de erro, que podem ser apanhadas usando a função #iferror:
{{#expr: 1+ }}→ Erro de expressão: Operando em falta para +.{{#expr: 1 xpto 2 }}→ Erro de expressão: Palavra "xpto" não reconhecida
Aviso: Algumas expressões podem resultar em erros de vírgula flutuante (floating-point) quando são usados números muito grandes ou muito pequenos:
{{#expr: 20060618093259 mod 10000}}→ 3259
Este retorna 3259 na maioria das vezes, mas ocasionalmente retorna -6357. Isto varia de acordo com a implementação da linguagem PHP, que executa a operação no servidor, se for de 32 ou 64 bits (ver bugzilla phabricator:6356).
Exemplos
[editar | editar código]| Operador | Operação | Exemplo |
|---|---|---|
| nenhum | {{#expr: 123456789012345}} = 1.2345678901234E+14 | |
| {{#expr: 0.000001}} = 1.0E-6 | ||
| ( ) | Operadores de grupos | {{#expr: (30 + 7) * 7 }} = 259 |
| + | Sinal unário +
|
{{#expr: +30 * +7}} = 210
|
| - | Sinal unário - (negação)
|
{{#expr: -30 * -7}} = 210
|
| not | NOT unário, NOT lógico | {{#expr: not 0 * 7}} = 7 {{#expr: not 30+7}} = 7 |
| * | Multiplicação | {{#expr: 30 * 7}} = 210 |
| / | Divisão, o mesmo que div | {{#expr: 30 / 7}} = 4.2857142857143 |
| div | Divisão, o mesmo que /, sem divisão por inteiro |
{{#expr: 30 div 7}} = 4.2857142857143 {{#expr: 5 div 2 * 2 + 5 mod 2}} = 6 |
| mod | "Módulo", resto da divisão após "truncar" ambos operadores em números inteiros. Atenção, div e mod são diferentes das demais linguagens de programação. |
{{#expr: 30 mod 7}} = 2 {{#expr: -8 mod -3}} = -2{{#expr: -8 mod +3}} = -2{{#expr: 8 mod 2.7}} = 0 {{#expr: 8 mod 3.2}} = 2 {{#expr: 8.9 mod 3}} = 2 |
+
|
Adição | {{#expr: 30 + 7}} = 37
|
-
|
Subtração | {{#expr: 30 - 7}} = 23
|
| round | Arredonda o número a esquerda para a potência de 1/10 dada a direita | {{#expr: 30 / 7 round 3}} = 4.286 {{#expr: 30 / 7 round 0}} = 4 {{#expr: 3456 round -2}} = 3500 |
| = | Igualdade | {{#expr: 30 = 7}} = 0 |
| <> | Desigualdade, o mesmo que != | {{#expr: 30 <> 7}} = 1 |
| != | Desigualdade, o mesmo que <>, xor lógico | {{#expr: 1 != 0}} = 1 |
| < | Menor que | {{#expr: 30 < 7}} = 0 |
| > | Maior que | {{#expr: 30 > 7}} = 1 |
| <= | Menor ou igual a | {{#expr: 30 <= 7}} = 0 |
| >= | Maior ou igual a | {{#expr: 30 >= 7}} = 1 |
| and | E lógico | {{#expr: 4<5 and 4 mod 2}} = 0 |
| or | OU lógico | {{#expr: 4<5 or 4 mod 2}} = 1 |
#se: ou #if:
[editar | editar código]A funçãoseouifé uma estrutura de seleção do tipo se-então-senão. A sintaxe é:
- {{ #se: <condição> | <então texto> | <senão texto> }}
- {{ #if: <condição> | <então texto> | <senão texto> }}
Se a condição é uma string vazia ou consiste apenas de espaços em branco, então é considerada como falsa, e a função retorna senão texto. Caso contrário, a função retorna então texto. O senão texto pode ser omitido; assim, se a condição for falsa, a função devolve um texto vazio.
Um exemplo:
{{Predefinição|parâmetro=algo}} {{Predefinição}} {{Predefinição|parâmetro=}}
| | |
| | |
| | |
{{ #se: {{{parâmetro|}}} | Parâmetro é definido. | Parâmetro não definido ou vazio}}
Note que a funçãoseesta não suporta sinais de "=" ou expressões matemáticas. {{#se: 1 = 2|sim|não}} irá devolver "sim", porque a string "1 = 2" não é vazia.
#seigual: ou #ifeq:
[editar | editar código]seigual (ou ifeq) compara duas strings ou números, e retorna outra string dependendo do resultado da comparação. A sintaxe é:
{{ #seigual: <texto 1> | <texto 2> | <igual texto> | <não igual texto> }}
Ambas strings podem ser interpretadas como números como se a comparação fosse numérica. Para forçar a comparação de uma cadeia de caracteres que não podem ser intepretadas como números deve-se adicionar aspas a elas:
{{ #seigual: +07 | 007 | 1 | 0 }}resulta 1{{ #seigual:"+07"|"007"| 1 | 0 }}resulta 0
A comparação de uma string é caso-sensitivo:
{{ #seigual: A | a | 1 | 0 }}resulta 0
#seerro ou #iferror
[editar | editar código]{{#seerro: expressão | valor se verdadeiro | valor se falso }}{{#iferror: expressão | valor se verdadeiro | valor se falso }}
Esta função determina se ocorre um erro no cálculo da expressão. Se ocorrer um erro, retorna o valor se verdadeiro. Se não, retorna o valor se falso.
{{#seerro: {{#expr: 1 + 2 }} | verdadeiro | falso}}→ falso{{#seerro: {{#expr: 1 + X }} | verdadeiro | falso}}→ verdadeiro- porque
{{#expr: 1 + X }}→ Erro de expressão: Palavra "x" não reconhecida
- porque
Um erro ocorre quando o resultado do cálculo contém um objecto HTML com class="error". Este objecto pode ser gerado por outras funções do analisador sintáctico, como #expr, #time e #rel2abs, 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 valor se falso e não ocorrer um erro, é retornado o resultado da expressão.
{{#seerro: {{#expr: 1 + 2 }} | verdadeiro }}→ 3{{#seerro: {{#expr: 1 + X }} | verdadeiro }}→ verdadeiro
Se também for omitido o valor se verdadeiro e ocorrer um erro, é retornada uma expressão vazia:
{{#seerro: {{#expr: 1 + 2 }} }}→ 3{{#seerro: {{#expr: 1 + X }} }}→
#seexiste ou #ifexist:
[editar | editar código]seexiste (ou ifexist) retorna um de dois resultados, baseado se existe ou não um artigo ou página com o título especificado. Exemplos:
{{#seexiste:Wikipédia|Sim|Não}}resulta Sim, porque Wikipédia existe{{#seexiste:wikipédia|Sim|Não}}resulta Sim, porque wikipédia é a forma canônica do artigo Wikipédia{{#seexiste:WiKiPeDiA|Sim|Não}}resulta Não porque o artigo WiKiPeDiA não existe{{#seexiste:m:Help:Calculation|Sim|Não}}resulta Não entretanto m:Help:Calculation existe, porque a função não interpreta o prefixo de interwiki.
O primeiro parâmetro é o título a ser checado, o segundo é o resultado positivo e o terceiro, o negativo. Se o parâmetro passado não produz um objeto com título válido, então o resultado é negativo.
#rel2abs
[editar | editar código]{{#rel2abs: deslocamento relativo}}{{#rel2abs: deslocamento relativo | endereço base}}
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 deslocamento relativo, os seguintes são válidos:
.- o nível actual..- subir um nível/xpto- descer um nível para o sub-directório/xpto
Assim:
{{#rel2abs: /quatro | Ajuda:Um/dois/três}}→ Ajuda:Um/dois/três/quatro{{#rel2abs: ./quatro | Ajuda:Um/dois/três}}→ Ajuda:Um/dois/três/quatro{{#rel2abs: ../quatro | Ajuda:Um/dois/três}}→ Ajuda:Um/dois/quatro{{#rel2abs: ../. | Ajuda:Um/dois/três}}→ Ajuda:Um/dois
Se o parâmetro endereço base não for especificado, será usado o nome completo da página:
{{#rel2abs: /quatro}}→ Ajuda:Funções sintáticas/quatro
Sintaxe inválida, como /. ou /./, é ignorada.
{{#rel2abs: ../quatro/. | Ajuda:Um/dois/três}}→ Ajuda:Um/dois/quatro{{#rel2abs: ../.././quatro | Ajuda:Um/dois/três}}→ Ajuda:Um/quatro{{#rel2abs: ../../../quatro | Ajuda:Um/dois/três}}→ quatro{{#rel2abs: ../../../../quatro | Ajuda:Um/dois/três}}→ Erro: Profundidade inválida no caminho: "Ajuda:Um/dois/três/../../../../quatro" (foi tentado o acesso a um nó acima do nó raiz)
#seexpr: ou #ifexpr:
[editar | editar código]seexpr (ou ifexpr) computa uma expressão matemática e retorna uma de duas strings como resultado
{{#seexpr: <expressão> | <então texto> | <senão texto> }}
Se a expressão calculada resulta em zero, então o senão texto é mostrado, do contrário, o então texto é mostrado. A sintaxe da expressão é a mesma utilizada por expr.
- O senão texto também é mostrado para expressões vazias:
{{#seexpr: {{ns:0}}|Presente|'''ou então'''}}resulta ou então- Omitindo ambos então texto e senão texto não resulta em nenhuma saída exceto uma possível mensagem de erro; isso pode ser utilizada para checar a correção de uma expressão, ou para checar a palavra da mensagem de erro (emulando afirmação, erros forçados):
{{#seexpr: 1/{{#seigual: {{ns:4}}|Meta|1|0}}}}Divisão por zero.{{#seexpr: 1/{{#seigual: {{ns:4}}|Meta|0|1}}}}{{#se:{{#seexpr: 1=2}}|errado|correto}}correto{{#se:{{#seexpr: 1E2}}|errado|correto}}correto{{#se:{{#seexpr: 1/0}}|errado|correto}}errado{{#se:{{#seexpr: a=b}}|errado|correto}}errado
#switch:
[editar | editar código]switch compara um único valor de comparação com vários outros, retornando uma string se encontrar um valor igual. A sintaxe é basicamente:
{{ #switch: <valor de comparação>
| <valor1> = <resultado1>
| <valor2> = <resultado2>
| ...
| <valorn> = <resultadon>
| <resultado padrão>
}}
switch irá procurar por cada valor passado até que um valor coincida com o valor de comparação. Quando encontrado, o resultado para aquele valor é retornado (o texto escrito após o sinal de igual). Se nenhum resultado for encontrado e o último item não possuir sinal de igualdade, a função então o retornará como resultado padrão. Se o seu resultado necessitar obrigatoriamente de um sinal de igualdade, você poderá utilizar #default:
{{ #switch: <valor de comparação>
| <valor> = <resultado>
| #default = <default resultado>
}}
Note que é possível também abortar valores (reduzindo a necessidade de resultados duplicados). Por exemplo:
{{ #switch: <valor de comparação>
| <valor1>
| <valor2>
| <valor3> = <resultado3>
| ...
| <valorn> = <resultadon>
| <resultado padrão>
}}
Note que o valor1 e valor2 não possuem o sinal de igualdade. Se eles forem encontrados, eles darão o resultado do valor3 (isto é, o que está no resultado3).
- Assim como para #ifeq:, a comparação é numérica quando possível:
{{ #switch: +07 | 7 = Sim | 007 = Bond | Não }}resulta Sim{{ #switch:"+07"|"7"= Sim |"007"= Bond | Não }}resulta Não- O valor encontrado pode ser vazio; assim sendo, as seguintes estruturas são equivalentes:
{{ #if: {{ns:0}} | não vazio | vazio }}resulta vazio{{ #switch:{{ns:0}}|=vazio|não vazio }}resulta vazio
Comparação entre strings são caso-sensitivo:
{{ #switch: A | a=0 | A=1 }}resulta 1{{ #switch: A | a=0 | 1 }}resulta 1
Não se deve confundir isso com o fato de que as funções de análise sintática são caso-sensitivo:
{{ #switch: A | a=0 | 1 }}resulta 1
| Exemplos | |
|---|---|
| Código | Descrição |
|
{{ #switch: {{FULLPAGENAME}} |
Este código que é normalmente usado em predefinições ou outras páginas especiais. Começa por determinar o nome completo da página em que está a ser mostrada a predefinição com o código {{FULLPAGENAME}}, de seguida compara esse valor obtido com os descritos na predefinição em "Wikipedia:Esplanada/geral", "Ajuda:Página principal" e "Wikipedia:Boas-vindas". Caso o resultado de {{FULLPAGENAME}} não se encontre em nenhum desses valores é mostrado o último valor onde diz "Está a ver outra página qualquer". Notar que a mensagem em "Ajuda:Página principal" e "Wikipedia:Boas-vindas" é a mesma porque no final de "Ajuda:Página principal" não existe "=". |
| {{ #switch: {{PAGENAME}} | Wikipedia:Esplanada/geral = Está a ver a página geral da esplanada | Ajuda:Página principal | Wikipedia:Boas-vindas = Está a ver a página de ajuda ou boas-vindas | Está a ver outra página qualquer }} | Código igual ao anterior, mas sem parágrafos. Esta formatação do código é necessária em alguns casos nos quais pode ser adicionado um parágrafo na mensagem mostrada ou quando ocorre um erro ao utilizar outros códigos dentro do #switch. Deve-se utilizar esta formatação apenas quando necessário devido à dificuldade de ler o código. |
|
{{ #switch: {{NAMESPACE}} |
Outro exemplo que começa por determinar o nome do domínio com {{NAMESPACE}}. Caso a página esteja em {{NS:0}} (domínio principal) é mostrada a mensagem "Artigos enciclopédicos". Se estiver em {{NS:2}} (domínio Usuário) é mostrada a mensagem "Página de usuário". Se for outro domínio é mostrada a mensagem "outro domínio qualquer". Notar que neste exemplo é usado | #default = outro domínio qualquer que tem o mesmo resultado se for usado | = outro domínio qualquer. O #default é necessário apenas em alguns casos. |
|
{{ #switch: olá |
Este exemplo não faz sentido nem tem utilidade. Como o valor "#switch: olá" nunca muda, o resultado é sempre o mesmo. As mensagens "São cinco" e "outra coisa" nunca são mostradas. |
|
{{ #switch: {{{1}}} |
Este exemplo deve ser utilizado apenas em predefinições que requerem o preenchimento de um campo "1". Por exemplo, pode-se utilizar este código em {{protegida}}, e quando um usuário usar essa predefinição numa página, deverá utilizar o código {{protegida|semi}} ou {{protegida|1=semi}} para mostrar a mensagem "Está semiprotegida" nessa página. |
|
{{ #switch: {{{prot}}} |
Exemplo igual ao anterior mas que define e requer o preenchimento de um campo com o nome "prot". Por exemplo, pode-se utilizar este código em {{protegida}}, e quando um usuário usar essa predefinição numa página, deverá utilizar o código {{protegida|prot=semi}} para mostrar a mensagem "Está semiprotegida" nessa página. Notar que neste exemplo, se fosse utilizado na página o código {{protegida|semi}}, seria mostrada a mensagem "Não está protegida" porque o valor de "prod" não foi definido. |
Notas:
- para determinar qual é o valor obtido com os códigos {{FULLPAGENAME}}, {{NAMESPACE}}, {{NS:2}} e similares para se poder utilizar em #switch, pode-se editar a página onde se quer determinar qual é o valor nessa página e colocar o código respectivo, fazendo de seguida a pré-visualização. Por exemplo pode-se editar a Wikipedia:Página de testes e colocar nessa página {{NAMESPACE}}, fazendo de seguida a pré-visualização. É mostrado então o valor "Wikipedia". Pode-se então usar o valor "Wikipedia" na predefinição com o #switch. Notar no entanto, que por questões de compatibilidade, caso ocorram mudanças no nome dos domínios (raro, no entanto possível), para este caso específico pode-se usar o código {{NS:4}} no switch em vez de "Wikipedia" que o resultado é o mesmo. Para saber os números de domínios ver a página Wikipedia:Domínio.
- para mais informações sobre {{FULLPAGENAME}}, {{NAMESPACE}}, {{NS:}} e códigos similares, muito utilizados em #switch, ver Ajuda:Palavras mágicas.
#time:
[editar | editar código]| Código | Descrição | Resultado actual |
|---|---|---|
| Ano | ||
| Y | Ano com 4 algarismos. | 2025 |
| y | Ano com 2 algarismos. | 25 |
| L | 1 se o ano é bissexto (Leap), 0 se não. | 0 |
| o | Ano no ISO-8601. ¹ | 2025 ² |
|
¹ Tem o mesmo valor que Y, excepto quando o número ISO da semana (W) pertence ao ano anterior ou ao seguinte, em que é usado esse ano e não Y. | ||
| Mês | ||
| n | Mês, sem zeros à esquerda. | 11 |
| m | Mês, com zeros à esquerda. | 11 |
| M | Nome abreviado do mês, na língua do site. | nov. |
| F | Nome completo do mês, na língua do site. | novembro |
| Semana | ||
| W | Número da semana no ISO-8601, com zeros à esquerda. | 46 |
| Dia | ||
| j | Dia do mês, sem zeros à esquerda. | 16 |
| d | Dia do mês, com zeros à esquerda. | 16 |
| z | Dia do ano (1 de Janeiro = 0). | 319 |
| D | Nome abreviado do dia. Raramente internacionalizado. | dom |
| l | Nome completo do dia. Raramente internacionalizado. | domingo |
| N | Dia da semana no ISO-8601. | 7 |
| w | Número do dia da semana (Segunda-Feira = 1). | 0 |
| Hora | ||
| a | "am" durante a manhã (00:00:00 → 11:59:59), "pm" à tarde e noite (12:00:00 → 23:59:59) | pm |
| A | Versão em maiúsculas de a acima.
|
PM |
| g | Hora no formato 12 horas, sem zeros à esquerda. | 12 |
| h | Hora no formato 12 horas, com zeros à esquerda. | 12 |
| G | Hora no formato 24 horas, sem zeros à esquerda. | 12 |
| H | Hora no formato 24 horas, com zeros à esquerda. | 12 |
| Minutos e segundos | ||
| i | Minutos após a hora, com zeros à esquerda. | 07 |
| s | Segundos após o minuto, com zeros à esquerda. | 43 |
| U | Segundos desde 1 de Janeiro de 1970 00:00:00 GMT. | 1763294863 |
| Miscelânea | ||
| L | 1 se este ano é bissexto no calendário Gregoriano, 0 se não. | 0 |
| t | Número de dias no mês presente. | 30 |
| c | Data no formato ISO-8601, equivalente a Y-m-dTH:i:s+00:00.
|
2025-11-16T12:07:43+00:00 |
| r | Data no formato RFC 2822, equivalente a D, j M Y H:i:s +0000, com o nome do dia e o nome do mês não internacionalizados.
|
Sun, 16 Nov 2025 12:07:43 +0000 |
| Calendários não Gregorianos | ||
| Iraniano | ||
| xij | Dia do mês. | 25 |
| xiF | Nome completo do mês. | Aban |
| xin | Número do mês. | 8 |
| xiY | Ano completo. | 1404 |
| Hebraico | ||
| xjj | Dia do mês. | 25 |
| xjF | Nome completo do mês. | Cheshvan |
| xjx | Forma genitiva do nome do mês. | Cheshvan |
| xjn | Número do mês. | 2 |
| xjY | Ano completo. | 5786 |
| Solar Tailandês | ||
| xkY | Ano completo. | 2568 |
| Formatação | ||
| xn | Formatar o próximo código numérico como um número ASCII. | Em Hindú, {{#time:H, xnH}} produz ०६, 06
|
| xN | Como xn, mas activa e desactiva conforme é repetido, e dura até ao fim do texto ou até que seja encontrado xN no texto.
| |
| xr | Formatar o próximo número como um número romano. Só funciona para números até 3000. | {{#time:xrY}} → MMXXV
|
| xg | Antes de uma formatação para o mês (n, m, M, F), produzir a forma genitiva se a língua do site distingue entre a forma genitiva e nominativa.
| |
{{#time: formato }}{{#time: formato | data/hora }}
Esta função formata uma data e/ou hora de acordo com a sintaxe fornecida. Por omissão, será usada a palavra mágica {{CURRENTTIMESTAMP}}, isto é, a hora da última vez em que a página foi apresentada em HTML.
{{#time: d-m-Y }}→ 16-11-2025{{#time: d M [[Y]] }}→ 16 nov. 2025
Pode ser especificado um objecto data/hora:
{{#time: d-m-Y | 2001-01-01}}→ 01-01-2001
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 (
\) seguida de um carácter de formatação são interpretados como o carácter literal, sem formatação.
{{#time: j de F de Y}}→ 16 16UTC novembro 16UTC 2025{{#time: j \de F \de Y}}→ 16 dUTC novembro dUTC 2025
- Caracteres envolvidos em aspas duplas (
") 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ó)xxé intrepretado como o carácter literalx.
{{#time: [[Y (ano)]] }}→ 2025 (pm112025){{#time: [[Y "(ano)"]] }}→ 2025 (ano)
{{#time: i's" }}→ 07'43"
O objecto data/hora pode ter qualquer formato aceite pela função strtotime() do PHP. São aceites objectos absolutos (20 December 2000) e relativos (+20 hours).
Aviso: A gama de datas aceites é desde 1 de Janeiro de 0100 até 31 de Dezembro de 9999. Valores fora desta gama serão interpretados incorretamente:
{{#time: d F Y | 15 April 0099 }}→ 15 abril 0099{{#time: d F Y | 15 abril 0099 }}→ 15 abril 0099{{#time: d F Y | 15 Abril 0099 }}→ 15 abril 0099{{#time: d F Y | 15 April 10000 }}→ Erro: Hora inválida.
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:
{{#time: Y | January 1 }}→ 2025{{#time: Y | janeiro 1 }}→ Erro: Hora inválida.{{#time: Y | 1 Janeiro }}→ Erro: Hora inválida.{{#time: Y | 1 de janeiro }}→ Erro: Hora inválida.
Um número de quatro algarismos é interpretado como horas e minutos, se possível, e como um ano, se não:
{{#time: Y m d H:i:s | 1959 }}→ 1959 11 16 00:00:00- (1959 é considerado uma hora e não um ano)
{{#time: Y m d H:i:s | 1960 }}→ 1960 11 16 00:00:00- (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):
{{#time: Y m d H:i:s | 195909 }}→ 2025 11 16 19:59:09- (195909 é considerado uma hora e não ano + mês)
{{#time: Y m d H:i:s | 196009 }}→ Erro: Hora inválida.- (embora 19:60:09 não seja uma hora válida, 196009 não é interpretado como Setembro de 1960)
Aviso: A funcionalidade de preenchimento de datas parciais não é consistente; algumas partes são preenchidas usando valores actuais, outras não:
{{#time: Y m d H:i:s | January 1 }}→ 2025 01 01 00:00:00{{#time: Y m d H:i:s | February 2007 }}→ 2007 02 01 00:00:00{{#time: Y m d H:i:s | fevereiro 2007 }}→ Erro: Hora inválida.- (vai para o início do mês, não para o dia actual)
A função faz alguns cálculos matemáticos:
{{#time: d F Y | January 0 2008 }}→ 31 dezembro 2007{{#time: d F | January 32 }}→ Erro: Hora inválida.{{#time: d F | February 29 2007 }}→ 01 março{{#time:j F Y|-14 days}}→ 2 novembro 2025 (14 dias atrás){{#time:H:i|+6 hours}}→ 18:07 (6 horas depois que o UTC){{#time:H:i|8:15 +6 hours}}→ 14:15{{#time:m/Y|-1 months}}→ 10/2025 (1 mês atrás)
Qualquer caractere não reconhecido será passado direto para a saída sem ser modificado. Há também duas convenções de aspas que podem ser utilizadas para produzir uma saída literal com caracteres.
- Caracteres dentro de aspas fechadas será considerado uma saída literal (no qual as próprias aspas serão removidas). Aspas não fechadas são consideradas aspas literais. Exemplo:
{{ #time: "O mês é" F}}→ O mês é Janeiro{{ #time:i's"}}→ 20'11"
- Barras invertidas como em PHP's date() são suportadas. \H produz um literal H, \" produz um literal ".
Faixa
[editar | editar código]A faixa de funcionamento correta é 1-1-1970 00:00:01 até 19-1-2038 03:14:07 (1 até 1 segundos após o início de 1970). Veja também Problema do ano 2038.
#timel
[editar | editar código]Esta função é idêntica a {{#time: ... }}, excepto por usar, como valor por omissão, a hora local do servidor da wiki (tal como definido em $wgLocaltimezone) quando não é fornecida uma data:
{{#time: Y-m-d }}→ 2025-11-16{{#timel: Y-m-d }}→ 2025-11-16
{{#time: Y F d h:i:s}}→ 2025 novembro 16 12:07:43{{#timel: Y F d h:i:s}}→ 2025 novembro 16 12:07:43
#titleparts
[editar | editar código]{{#titleparts: página | n.º segmentos | n.º primeiro segmento }}
Esta função separa um título de página em segmentos com base nas barras (/, e retorna alguns desses segmentos. Se o parâmetro n.º segmentos for omitido, por omissão será zero e são retornados todos os segmentos. Se o parâmetro 1.º segmento for omitido ou for zero, por omissão, toma o valor 1:
{{#titleparts: Discussão:Um/dois/três }}→ Discussão:Um/dois/três{{#titleparts: Discussão:Um/dois/três | 1 }}→ Discussão:Um{{#titleparts: Discussão:Um/dois/três | 2 }}→ Discussão:Um/dois{{#titleparts: Discussão:Um/dois/três | 2 | 2 }}→ dois/três
Ambos os parãmetros aceitam valores negativos. Valores negativos no parâmetro n.º segmentos efectivamente «retira» segmentos do fim do título:
{{#titleparts: Discussão:Um/dois/três | -1 }}→ Discussão:Um/dois{{#titleparts: Discussão:Um/dois/três | -1 | 1 }}→ Discussão:Um/dois{{#titleparts: Discussão:Um/dois/três | -1 | 2 }}→ dois{{#titleparts: Discussão:Um/dois/três | -1 | 3 }}→
Valores negativos no parâmetro 1.º segmento efectivamente deixam no título só esse número de elementos, contados a partir da direita:
{{#titleparts: Discussão:Um/dois/três | | -2 }}→ dois/três{{#titleparts: Discussão:Um/dois/três | 1 | -2 }}→ dois{{#titleparts: Discussão:Um/dois/três | 2 | -2 }}→ dois/três{{#titleparts: Discussão:Um/dois/três | 3 | -2 }}→ dois/três
O título é dividido um máximo de 25 vezes; quaisquer mais barras (/) são ignoradas. O primeiro parâmetro também está limitado a 255 caracteres, porque é tratado como um título de página:
{{#titleparts: 1/2/3/4/5/6/7/8/9/10/11/12/→ 25/26/27/28/29/30/31
13/14/15/16/17/18/19/20/21/22/23/24/25/26/
27/28/29/30/31 | 1 | 25 }}
Aviso: Pode usar #titleparts: como um pequeno «analisador e conversor sintáctico», mas considere que, quando a função retorna o primeiro segmento, retorna-o com a primeira letra em maiúsculas. Se esta característica for indesejada, use a palavra mágica lc: para controlar o resultado.
{{#titleparts: um/dois/três/quatro | 1 | 1 }}→ Um{{#titleparts: um/dois/três/quatro | 1 | 2 }}→ dois{{lc:{{#titleparts: um/dois/três/quatro | 1 | 1 }} }}→ um
Notas gerais
[editar | editar código]Substituição
[editar | editar código]As funções do analisador sintáctico podem ser substituídas. Isto significa que, quando a página é gravada, a chamada para a função é substituída pelo resultado dessa função. Para substituir uma função, coloque subst: antes do cardinal (#). Por exemplo, o código:
{{#ifexist: Help:Contents/pt | sim | não }}→ não
demonstra se a página Help:Contents/pt existe ou não. Quando o código é colocado numa página, sempre que a página é apresentada ao utilizador o código é executado e resultará em sim se a página existir e, mais tarde, em não se entretanto ela tiver sido apagada. Se a função for substituída:
{{subst:#ifexist: Help:Contents/pt | sim | não }}→ sim
quando a página for gravada o código será executado e substituído pelo resultado da função (o código desaparece no conteúdo da página, sendo substituído pelo resultado). A partir daí, a função deixa de ser executada porque o código já não existe.
Aviso: O resultado de uma substituição é indefinido, se as expressões contiverem código volátil (como palavras mágicas ou outras funções do analisador sintáctico) que não seja também substituído. Para que o resultado da substituição seja consistente, todo o código volátil tem também de ser substituído usando subst::
{{#ifexist: {{PAGENAME}} | sim | não }}→ sim{{subst:#ifexist: {{PAGENAME}} | sim | não }}→ não{{subst:#ifexist: {{subst:PAGENAME}} | sim | não }}→ sim
Para mais detalhes consulte Help:Substitution.
Tabelas
[editar | editar código]Atualmente as barras verticais nas sintaxes de tabelas não funcionam dentro de condicionais. Há duas maneiras de contornar o problema.
- Utilizar a palavra mágica {{!}}.
- Utilizar sintaxe html.
Expressões
[editar | editar código]- div não é a divisão inteira, utilize / para divisão de números reais.
- mod utiliza o operador PHP %, que é diferente do operador módulo em outras linguagens de programação
- mod algumas vezes retornas resultados errados para a mesma entrada de valores, veja 6356 e m:ParserFunctions/MOD10000. valores menores que 1E+12 aparentemente não são afetadas.
- Resultados válidos de #expr: como 1.0E-7 ainda não são suportados como valor de entrada
{{#expr:1.0E-7}}resulta 1.0E-7.
- Sob certas condições, round 0 resulta em -0 ao invés de 0. Para uma expressão x, utilizando 0+(x) conserta essa falha.
Espaços brancos de condicionais
[editar | editar código]Se você apenas deseja inserir espaços em brancos, você pode utilizar a entidade do HTML  , que insere " ".
se você deseja novas linhas ou outros espaços em branco, você pode inserir caracteres não imprimíveis entre a barra vertical e o espaço em branco:
primeiro parágrafo. {{#if:{{{paragráfo}}}|<nowiki />
segundo parágrafo.}}
primeiro parágrafo.
segundo parágrafo.
Ver também
[editar | editar código]- Ajuda:Palavras mágicas
- mw:Help:Extension:ParserFunctions
- m:Help:Calculation
- m:Category:Templates using ParserFunctions