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 editar

#expr: editar

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 editar

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

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

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

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

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

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

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

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: editar

Código Descrição Resultado actual
Ano
Y Ano com 4 algarismos. 2024
y Ano com 2 algarismos. 24
L 1 se o ano é bissexto (Leap), 0 se não. 1
o Ano no ISO-8601. ¹ 2024 ²

¹ 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. 4
m Mês, com zeros à esquerda. 04
M Nome abreviado do mês, na língua do site. abr.
F Nome completo do mês, na língua do site. abril
Semana
W Número da semana no ISO-8601, com zeros à esquerda. 17
Dia
j Dia do mês, sem zeros à esquerda. 22
d Dia do mês, com zeros à esquerda. 22
z Dia do ano (1 de Janeiro = 0). 112
D Nome abreviado do dia. Raramente internacionalizado. seg
l Nome completo do dia. Raramente internacionalizado. segunda-feira
N Dia da semana no ISO-8601. 1
w Número do dia da semana (Segunda-Feira = 1). 1
Hora
a "am" durante a manhã (00:00:00 → 11:59:59), "pm" à tarde e noite (12:00:00 → 23:59:59) am
A Versão em maiúsculas de a acima. AM
g Hora no formato 12 horas, sem zeros à esquerda. 9
h Hora no formato 12 horas, com zeros à esquerda. 09
G Hora no formato 24 horas, sem zeros à esquerda. 9
H Hora no formato 24 horas, com zeros à esquerda. 09
Minutos e segundos
i Minutos após a hora, com zeros à esquerda. 33
s Segundos após o minuto, com zeros à esquerda. 47
U Segundos desde 1 de Janeiro de 1970 00:00:00 GMT. 1713778427
Miscelânea
L 1 se este ano é bissexto no calendário Gregoriano, 0 se não. 1
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. 2024-04-22T09:33:47+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. Mon, 22 Apr 2024 09:33:47 +0000
Calendários não Gregorianos
Iraniano
xij Dia do mês. 3
xiF Nome completo do mês. Ordibehesht
xin Número do mês. 2
xiY Ano completo. 1403
Hebraico
xjj Dia do mês. 14
xjF Nome completo do mês. Nisan
xjx Forma genitiva do nome do mês. Nissan
xjn Número do mês. 7
xjY Ano completo. 5784
Solar Tailandês
xkY Ano completo. 2567
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}} → MMXXIV
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 }} → 22-04-2024
{{#time: d M [[Y]] }} → 22 abr. 2024

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}} → 22 22UTC abril 22UTC 2024
{{#time: j \de F \de Y}} → 22 dUTC abril dUTC 2024
  • 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)]] }} → 2024 (am42024)
{{#time: [[Y "(ano)"]] }} → 2024 (ano)
{{#time: i's" }} → 33'47"

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 }} → 2024
{{#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 04 22 00:00:00
(1959 é considerado uma hora e não um ano)
{{#time: Y m d H:i:s | 1960 }} → 1960 04 22 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 }} → 2024 04 22 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 }} → 2024 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}} → 8 abril 2024 (14 dias atrás)
{{#time:H:i|+6 hours}} → 15:33 (6 horas depois que o UTC)
{{#time:H:i|8:15 +6 hours}} → 14:15
{{#time:m/Y|-1 months}} → 03/2024 (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

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

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 }}2024-04-22
{{#timel: Y-m-d }}2024-04-22
{{#time: Y F d h:i:s}}2024 abril 22 09:33:47
{{#timel: Y F d h:i:s}}2024 abril 22 09:33:47

#titleparts editar

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

Substituição editar

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

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

Expressões editar

  • 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

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 editar

Ligações externas editar