Saltar para o conteúdo

Ajuda:Funções sintáticas

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de Ajuda:ParserFunctions)
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...}}
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).

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

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-fonte]

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-fonte]
{{#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 | editar código-fonte]

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: 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-fonte]

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 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.
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. 12
m Mês, com zeros à esquerda. 12
M Nome abreviado do mês, na língua do site. dez.
F Nome completo do mês, na língua do site. dezembro
Semana
W Número da semana no ISO-8601, com zeros à esquerda. 52
Dia
j Dia do mês, sem zeros à esquerda. 25
d Dia do mês, com zeros à esquerda. 25
z Dia do ano (1 de Janeiro = 0). 359
D Nome abreviado do dia. Raramente internacionalizado. qua
l Nome completo do dia. Raramente internacionalizado. quarta-feira
N Dia da semana no ISO-8601. 3
w Número do dia da semana (Segunda-Feira = 1). 3
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. 7
h Hora no formato 12 horas, com zeros à esquerda. 07
G Hora no formato 24 horas, sem zeros à esquerda. 19
H Hora no formato 24 horas, com zeros à esquerda. 19
Minutos e segundos
i Minutos após a hora, com zeros à esquerda. 35
s Segundos após o minuto, com zeros à esquerda. 10
U Segundos desde 1 de Janeiro de 1970 00:00:00 GMT. 1735155310
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. 31
c Data no formato ISO-8601, equivalente a Y-m-dTH:i:s+00:00. 2024-12-25T19:35:10+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. Wed, 25 Dec 2024 19:35:10 +0000
Calendários não Gregorianos
Iraniano
xij Dia do mês. 5
xiF Nome completo do mês. Dey
xin Número do mês. 10
xiY Ano completo. 1403
Hebraico
xjj Dia do mês. 24
xjF Nome completo do mês. Kislev
xjx Forma genitiva do nome do mês. Kislev
xjn Número do mês. 3
xjY Ano completo. 5785
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 }} → 25-12-2024
{{#time: d M [[Y]] }} → 25 dez. 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}} → 25 25UTC dezembro 25UTC 2024
{{#time: j \de F \de Y}} → 25 dUTC dezembro 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 (pm122024)
{{#time: [[Y "(ano)"]] }} → 2024 (ano)
{{#time: i's" }} → 35'10"

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

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.

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-12-25
{{#timel: Y-m-d }}2024-12-25
{{#time: Y F d h:i:s}}2024 dezembro 25 07:35:10
{{#timel: Y F d h:i:s}}2024 dezembro 25 07:35:10
{{#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

Substituição

[editar | editar código-fonte]

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.

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

  • 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-fonte]

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.

Ligações externas

[editar | editar código-fonte]