Ajuda:Funções sintáticas

Nota: Para consultar a documentação original, veja mw:Help:Extension:ParserFunctions/pt (em português)/mw:Help:Extension:ParserFunctions/pt-br (em português do Brasil) e mw:Help:Extension:ParserFunctions (em inglês)

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

#expr:

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: Falta operando 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

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:

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:

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

{#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

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:

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

{#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:

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:

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

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}
| {NS:0} = Artigos enciclopédicos
| {NS:2} = Página de usuário
| #default = outro domínio qualquer
}

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á
| olá = Isto é um olá
| cinco = São cinco
| #default = outra coisa
}

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}
| protegida = Está protegida
| semi = Está semiprotegida
| #default = Não está protegida
}

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}
| protegida = Está protegida
| semi = Está semiprotegida
| #default = Não está protegida
}

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:

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.
² Resulta literalmente no símbolo o se ¹ não for satisfeita.

Mês
n Mês, sem zeros à esquerda. 3
m Mês, com zeros à esquerda. 03
M Nome abreviado do mês, na língua do site. mar.
F Nome completo do mês, na língua do site. março
Semana
W Número da semana no ISO-8601, com zeros à esquerda. 13
Dia
j Dia do mês, sem zeros à esquerda. 27
d Dia do mês, com zeros à esquerda. 27
z Dia do ano (1 de Janeiro = 0). 85
D Nome abreviado do dia. Raramente internacionalizado. qui
l Nome completo do dia. Raramente internacionalizado. quinta-feira
N Dia da semana no ISO-8601. 4
w Número do dia da semana (Segunda-Feira = 1). 4
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. 3
h Hora no formato 12 horas, com zeros à esquerda. 03
G Hora no formato 24 horas, sem zeros à esquerda. 15
H Hora no formato 24 horas, com zeros à esquerda. 15
Minutos e segundos
i Minutos após a hora, com zeros à esquerda. 48
s Segundos após o minuto, com zeros à esquerda. 57
U Segundos desde 1 de Janeiro de 1970 00:00:00 GMT. 1743090537
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. 31
c Data no formato ISO-8601, equivalente a Y-m-dTH:i:s+00:00. 2025-03-27T15:48:57+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. Thu, 27 Mar 2025 15:48:57 +0000
Calendários não Gregorianos
Iraniano
xij Dia do mês. 7
xiF Nome completo do mês. Farvardin
xin Número do mês. 1
xiY Ano completo. 1404
Hebraico
xjj Dia do mês. 27
xjF Nome completo do mês. Adar
xjx Forma genitiva do nome do mês. Adar
xjn Número do mês. 6
xjY Ano completo. 5785
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 } → 27-03-2025
{#time: d M [[Y]] } → 27 mar. 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} → 27 27UTC março 27UTC 2025
{#time: j \de F \de Y} → 27 dUTC março 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 literal x.
{#time: [[Y (ano)]] } → 2025 (pm32025)
{#time: [[Y "(ano)"]] } → 2025 (ano)
{#time: i's" } → 48'57"

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: tempo inválido

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: tempo inválido
{#time: Y | 1 Janeiro } → Erro: tempo inválido
{#time: Y | 1 de janeiro } → Erro: tempo inválido

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 03 27 00:00:00
(1959 é considerado uma hora e não um ano)
{#time: Y m d H:i:s | 1960 } → 1960 03 27 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 03 27 19:59:09
(195909 é considerado uma hora e não ano + mês)
{#time: Y m d H:i:s | 196009 } → Erro: tempo inválido
(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: tempo inválido
(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: tempo inválido
{#time: d F | February 29 2007 } → 01 março
{#time:j F Y|-14 days} → 13 março 2025 (14 dias atrás)
{#time:H:i|+6 hours} → 21:48 (6 horas depois que o UTC)
{#time:H:i|8:15 +6 hours} → 14:15
{#time:m/Y|-1 months} → 02/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

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

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-03-27
{#timel: Y-m-d }2025-03-27
{#time: Y F d h:i:s}2025 março 27 03:48:57
{#timel: Y F d h:i:s}2025 março 27 03:48:57

#titleparts

{#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/
13/14/15/16/17/18/19/20/21/22/23/24/25/26/
27/28/29/30/31 | 1 | 25 }
 → 25/26/27/28/29/30/31

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

Substituição

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

Atualmente as barras verticais nas sintaxes de tabelas não funcionam dentro de condicionais. Há duas maneiras de contornar o problema.

Expressões

  • 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

Se você apenas deseja inserir espaços em brancos, você pode utilizar a entidade do HTML &#32;, 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

Ligações externas