Help:Extensão:ParserFunctions

From MediaWiki.org
Jump to: navigation, search
This page is a translated version of the page Help:Extension:ParserFunctions and the translation is 95% complete.

Other languages:
български • ‎বাংলা • ‎Deutsch • ‎Zazaki • ‎English • ‎British English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎Lëtzebuergesch • ‎मराठी • ‎polski • ‎پښتو • ‎português • ‎português do Brasil • ‎русский • ‎svenska • ‎தமிழ் • ‎ไทย • ‎Türkçe • ‎中文

A extensão ParserFunctions fornece funções adicionais ao analisador sintático, que suplementam as "palavras mágicas" já presentes no MediaWiki. Todas as funções fornecidas pela extensão têm a forma:

{{
{{#função: argumento 1 | argumento 2 | argumento 3 ...}}
}}

#expr

Tipo Operadores
Agrupamento (parênteses) ( )
Números 1234.5   e (2.718)   pi (3.142)
Operador binário e   Unários +,-
Unários not ceil trunc floor abs exp ln sin cos tan acos asin atan
Binários ^
* / div mod
+ -
Arredondamento round
Lógicos = != <> > < >= <=
and
or

Esta função calcula a expressão matemática e retorna o resultado.

{{#expr: Expressão }}

Os operadores matemáticos disponíveis estão listados na tabela da direita, por ordem crescente de precedência. Para mais detalhes sobre cada operador, consulte MetaWiki:Help:Calculation .

Nos operadores de álgebra booleana, o número zero assume o valor lógico «falso» (0). Qualquer outro número, positivo ou negativo, assume o valor lógico «verdadeiro» (1).

{{#expr: 1 and -1 }}1
{{#expr: 1 and 0 }}0

Uma expressão de entrada vazia retorna uma string vazia. Expressões inválidas retornam uma das várias mensagens de erro, que podem ser capturadas com a função #iferror:

{{#expr: }}
{{#expr: 1+ }}Expression error: Missing operand for +.
{{#expr: 1 foo 2 }}Expression error: Unrecognized word "foo".

A ordem dos operandos de adição e subtração, antes ou depois de um número, é significativa, e pode ser tratada como um valor positivo ou negativo, em vez de como um operando com uma entrada errada:

{{#expr: +1 }}1
{{#expr: -1 }}-1
{{#expr: + 1 }}1
{{#expr: - 1 }}-1

Note que, se estiver usando a saída de palavras mágicas, você deve formatá-las, a fim de remover vírgulas e traduzir os numerais. Por exemplo {{NUMBEROFUSERS}} resulta em {{NUMBEROFUSERS}}, onde desejamos {{NUMBEROFUSERS}} que pode ser obtido por {{NUMBEROFUSERS}}. Isto é especialmente importante em algumas línguas, onde números são traduzidos. Por exemplo, no idioma Bengali, {{NUMBEROFUSERS}} produz, como resultado, ৩০,০৬১.

{{#expr:{{NUMBEROFUSERS}}+100}}Expression error: Unrecognized punctuation character "�".
{{#expr:{{formatnum:{{NUMBEROFUSERS}}|R}}+100}}1872539


Aviso Aviso: O operador mod retorna resultados errados para alguns valores do segundo argumento:
{{#expr: 123 mod (2^64-1)}}Division by zero. (produz uma string vazia; deve ser 123)
Se você deseja efetuar cálculos baseados em datas (Se a data e a hora atuais forem posteriores a alguma outra data e hora), primeiro converta o tempo para o número de segundos após 01 de janeiro de 1970 usando {{#time: U }}, então você pode simplesmente somar e subtrair datas.

Arredondamento

Arredonda o número do lado esquerdo a um múltiplo de 1/10 elevado a uma potência, com o expoente igual ao valor truncado de um dado número do lado direito.

Para arredondar para cima ou para baixo usar os operadores unários ceil or floor respectivamente.

Case de teste Resultado Método de arredondamento
{{#expr: 1/3 round 5 }} 0.33333 O dígito final é menor que 5, então nenhum arredondamento aparente ocorre
{{#expr: 1/6 round 5 }} 0.16667 O dígito final é maior ou igual a 5, então é arredondado para cima
{{#expr: 8.99999/9 round 5 }} 1 Mais uma vez, o resultado é arredondado para cima no último dígito, o que resulta no arredondamento adicional
{{#expr: 1234.5678 round -2 }} 1200 Arredondado para os 100 mais próximos por causa dos valores negativos arredondar para a esquerda do ponto decimal
{{#expr: 1234.5678 round 2 }} 1234.57 Arredondado para o centésimo mais próximo uma vez que valores positivos arredondam para a direita do ponto decimal
{{#expr: 1234.5678 round 2.3 }} 1234.57 Decimais no índice de arredondamento não fazem diferença no resultado arredondado
{{#expr: trunc 1234.5678 }} 1234 Parte decimal truncada (cortada)
Arredondamento para o número inteiro mais próximo
{{#expr: 1/3 round 0 }} 0 Baixando para o inteiro "mais próximo", que é zero
{{#expr: 1/2 round 0 }} 1 Subindo para o número inteiro mais próximo, que é um
{{#expr: 3/4 round 0 }} 1 Subindo para o número inteiro mais próximo, que é um
{{#expr: -1/3 round 0 }} -0 Até o número inteiro mais próximo, que é zero
Aviso Aviso: O sinal negativo em zero pode causar incompatibilidades de igualdade
{{#expr: -1/2 round 0 }} -1 Baixando para o inteiro mais próximo, que é negativo
{{#expr: -3/4 round 0 }} -1 Baixando para o inteiro mais próximo, que é negativo
Arredondamento para cima ou para baixo com ceil e floor
{{#expr: ceil(1/3) }} 1 Até o próximo número inteiro "maior", que é um
{{#expr: floor(1/3) }} 0 Baixando para o próximo inteiro "menor, que é zero
{{#expr: ceil(-1/3) }} -0 Até o próximo número inteiro maior, que é igual a zero
Aviso Aviso: O sinal negativo em zero pode causar incompatibilidades de igualdade
{{#expr: floor(-1/3) }} -1 Baixando para o menor inteiro mais próximo, que é negativo
{{#expr: ceil 1/3 }} 0.33333333333333 Não arredondado uma vez que 1 já é um inteiro
Aviso Aviso: Interpretado como (ceil 1)/3, não ceil(1/3) como se poderia esperar

#if

Esta função avalia uma seqüência de teste e determina se é ou não é vazio. Uma seqüência de teste que contém apenas espaço em branco é considerado vazio.

{{#if: string de teste | valor se a string de teste não estiver vazia | valor se a string de teste está vazia (ou apenas espaços em branco) }}
{{#if: primeiro parâmetro | segundo parâmetro | terceiro parâmetro }}

Esta função primeiramente testa se o primeiro parâmetro não está vazio. Se o primeiro parâmetro não estiver vazio a função exibe o segundo argumento. Se o primeiro parâmetro estiver vazio ou contiver apenas espaços em branco (espaços, quebras de linha, etc) ele exibe o terceiro argumento.

{{#if: | yes | no}}no
{{#if: string | yes | no}}yes
{{#if:      | yes | no}}no
{{#if:


| yes | no}}
no

A string de teste sempre será interpretada como texto puro, então expressões matemáticas não serão avaliadas:

{{#if: 1==2 | yes | no }}yes
{{#if: 0 | yes | no }}yes

Um ou outro ou ambos os valores de retorno podem ser omitidos:

{{#if: foo | yes }}yes
{{#if: | yes }}
{{#if: foo | | no}}

A função pode ser aninhada. Para isso, aninhe a função #if interior em sua forma integral no lugar do terceiro parâmetro da função delimitadora #if. A profundidade de pelo menos sete níveis de aninhamento é possível, apesar de que pode depender do wiki ou de um limite de memória.

  • Exemplo: {{#if:string de teste | valor se string de teste não está vazia | {{#if:string de teste | valor se string de teste não está vazia | valor se string de teste está vazia (ou apenas espaços em branco)}} }}

Veja Parser functions in templates para mais exemplos dessa função analisadora.

#ifeq

Esta função do analisador compara duas strings e determina se elas são idênticas.

{{#ifeq: string 1 | string 2 | value if identical | value if different }}

Se ambas as strings são valores numéricos válidos, as strings são comparadas numericamente:

{{#ifeq: 01 | 1 | equal | not equal}}equal
{{#ifeq: 0 | -0 | equal | not equal}}equal
{{#ifeq: 1e3 | 1000 | equal | not equal}}equal
{{#ifeq: {{#expr:10^3}} | 1000 | equal | not equal}}equal

Caso contrário, a comparação é feita como texto; esta comparação é case sensitive:

{{#ifeq: foo | bar | equal | not equal}}not equal
{{#ifeq: foo | Foo | equal | not equal}}not equal
{{#ifeq: "01" | "1" | equal | not equal}}not equal  (comparar a exemplo semelhante anteriormente, sem as aspas)
{{#ifeq: 10^3 | 1000 | equal | not equal}}not equal  (comparar com o exemplo semelhante acima, com #expr)

Como um exemplo prático, dada uma predefinição existente Template:Size usado para definir tamanhos curtos e longos padronizados, definidos como:

{{#ifeq: {{{1|}}} | short | 20 | 40}}

acontecerá o seguinte:

{{size|short}}20
{{size|20}}40
{{size}}40
Aviso Aviso: Comparações numéricas com #ifeq e #switch não são equivalentes às comparações com #expr:
{{#ifeq: 12345678901234567 | 12345678901234568 | equal | not equal}}not equal
{{#switch: 12345678901234567 | 12345678901234568 = equal | not equal}}not equal

porque o PHP compara dois números do tipo integer, enquanto que:

{{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal}}equal

pois o MediaWiki converte números em expressões literais para o tipo float, o que, para inteiros grandes como estes, envolve arredondamento.

Aviso Aviso: Tags e funções de análise dentro das tags do analisador (como <nowiki>) são substituídas temporariamente por um código único. Isso afeta as comparações:
{{#ifeq: <nowiki>foo</nowiki> | <nowiki>foo</nowiki> | equal | not equal}}not equal
{{#ifeq: <math>foo</math> | <math>foo</math> | equal | not equal}}not equal
{{#ifeq: {{#tag:math|foo}} | {{#tag:math|foo}} | equal | not equal}}not equal
{{#ifeq: [[foo]] | [[foo]] | equal | not equal}}equal

Se as strings a serem comparadas são dadas como chamadas iguais para a mesma predefinição que contenha essas tags, então a condição é verdadeira, mas, no caso de duas predefinições com conteúdo idêntico contendo tais tags, ela é falsa.

Aviso Aviso:

Be careful when comparing against the current page title using the page name magic words. These magic words convert special characters into numeric HTML entities. This may result in misleading results. For example, if you are on a page titled "L'Aquila"...

{{#ifeq: L'Aquila | {{FULLPAGENAME}} | equal | not equal}}not equal

To work around this, apply the magic word to both parameters:

{{#ifeq: {{FULLPAGENAME: L'Aquila}} | {{FULLPAGENAME}} | equal | not equal}}equal

#iferror

Esta função recebe uma string de entrada e retorna um de dois resultados; a função avalia a true se a string de entrada contém um objeto HTML com class="error", como gerada por outras funções do analisador, tais como #expr, #time e #rel2abs, erros de predefinições, tais como loops e recursões, e outros erros do analisador do tipo failsoft.

{{#iferror: test string | value if error | value if correct }}

Uma ou ambas as strings de retorno podem ser omitidas. Se a string correct is omitida, the string de teste é retornada se não estiver errada. Se a string de erro também é omitida, uma string vazia é retornada com erro:

{{#iferror: {{#expr: 1 + 2 }} | error | correct }}correct
{{#iferror: {{#expr: 1 + X }} | error | correct }}error
{{#iferror: {{#expr: 1 + 2 }} | error }}3
{{#iferror: {{#expr: 1 + X }} | error }}error
{{#iferror: {{#expr: 1 + 2 }} }}3
{{#iferror: {{#expr: 1 + X }} }}
{{#iferror: <strong class="error">a</strong> | error | correct }}error

#ifexpr

Esta função avalia uma expressão matemática e retorna uma de duas strings, dependendo do valor booleano do resultado:

{{#ifexpr: expression | value if true | value if false }}

A expressão de entrada é avaliada exatamente como para #expr acima, com os mesmos operadores que estão disponíveis. A saída é, então, avaliada como uma expressão booleana.

Uma expressão de entrada vazia é avaliada como false:

{{#ifexpr: | yes | no}}no

Como mencionado acima, zero é avaliado como false e qualquer valor diferente de zero é avaliado como true, então esta função é equivalente a uma utilização de #ifeq e #expr apenas:

{{#ifeq: {{#expr: expression }} | 0 | value if false | value if true }}

com exceção de uma expressão de entrada vazia ou errada (uma mensagem de erro é tratada como uma string vazia, não é igual a zero, então temos valor se verdadeiro).

{{#ifexpr: = | yes | no }}Expression error: Unexpected = operator.

comparação

{{#ifeq: {{#expr: = }} | 0 | no | yes }}yes

Um ou outro ou ambos os valores de retorno podem ser omitidos; nenhuma saída é dada quando o pacote apropriado é deixado vazio:

{{#ifexpr: 1 > 0 | yes }}yes
{{#ifexpr: 1 < 0 | yes }}
{{#ifexpr: 0 = 0 | yes }}yes
{{#ifexpr: 1 > 0 | | no}}
{{#ifexpr: 1 < 0 | | no}}no
{{#ifexpr: 1 > 0 }}

#ifexist

Esta função recebe uma string de entrada, interpreta-a como um título da página, e retorna um dos dois valores, dependendo ou não se a página existe no wiki local.

{{#ifexist: page title | value if exists | value if doesn't exist }}

A função é avaliada como true se a página existe, se ele contém conteúdo, está visivelmente em branco (contém meta-dados, como links de categoria ou palavras mágicas, mas sem conteúdo visível), está em branco, ou é um redirecionamento. Apenas páginas que estão com link em vermelho são avaliadas como false, inclusive se a página usada existir, mas foi eliminada.

{{#ifexist: Help:Extension:ParserFunctions/pt-br | exists | doesn't exist }}exists
{{#ifexist: XXHelp:Extension:ParserFunctions/pt-brXX | exists | doesn't exist }}doesn't exist

A função é avaliada como true para mensagens de sistema que tenham sido personalizadas, e por páginas especiais que são definidas pelo software.

{{#ifexist: Special:Watchlist | exists | doesn't exist }}exists
{{#ifexist: Special:CheckUser | exists | doesn't exist }}exists (pois a extensão CheckUser está instalada nesta wiki)
{{#ifexist: MediaWiki:Copyright | exists | doesn't exist }}exists (pois MediaWiki:Copyright foi personalizado)

Se uma página verifica um destino usando #ifexist:, então, essa página aparecerá na lista Special:WhatLinksHere para a página de destino. Então, se o código {{#ifexist:Foo}} foi incluído em tempo real nesta página (Help:Extension:ParserFunctions/pt-br), Special:WhatLinksHere/Foo listará Help:Extension:ParserFunctions/pt-br.

Nas wikis que usam um repositório de mídia compartilhada, #ifexist: pode ser usado para verificar se um arquivo foi enviado para o repositório, mas não para a própria wiki:

{{#ifexist: File:Example.png | exists | doesn't exist }}doesn't exist
{{#ifexist: Image:Example.png | exists | doesn't exist }}doesn't exist
{{#ifexist: Media:Example.png | exists | doesn't exist }}exists

Se uma página de descrição do local, foi criado para o arquivo, o resultado é existe para todos os itens acima.

#ifexist: não funciona com links interwiki.

limites de ifexist

#ifexist: é considerada uma "função dispendiosa"; apenas um número limitado de aparições podem ser incluídas em uma página (incluindo funções dentro de predefinições transcluídas). Quando este limite é excedido, qualquer outra aparição da função #ifexist: automaticamente retornará false, se a página de destino existe ou não, e a página é categorizada em Category:Pages with too many expensive parser function calls. O nome da categoria de monitoramento pode variar dependendo do idioma do conteúdo de sua wiki.

Para alguns casos de uso, é possível emular o efeito da função com estilos CSS, usando os seletores a.new (para selecionar links para páginas que não existem) ou a:not(.new) (para selecionar links para páginas que existem). Além disso, uma vez que o número de funções do analisador dispendiosas que podem ser utilizadas em uma página única é controlado pela variável $wgExpensiveParserFunctionLimit, a mesma pode também aumentar o limite no arquivo LocalSettings.php, se necessário.

#rel2abs

Essa função converte um caminho de arquivo relativo em um caminho absoluto.

{{#rel2abs: path }}
{{#rel2abs: path | base path }}

Dentro da entrada do caminho, a seguinte sintaxe é válida:

  • . → o nível atual
  • .. → "suba um nível"
  • /foo → "desça um nível no subdiretório /foo"

Se o caminho base não for especificado, o nome completo da página será usado em vez disso:

{{#rel2abs: /quok | Help:Foo/bar/baz }}Help:Foo/bar/baz/quok
{{#rel2abs: ./quok | Help:Foo/bar/baz }}Help:Foo/bar/baz/quok
{{#rel2abs: ../quok | Help:Foo/bar/baz }}Help:Foo/bar/quok
{{#rel2abs: ../. | Help:Foo/bar/baz }}Help:Foo/bar

Sintaxe inválida, como /. ou /./, é ignorada. Desde são permitidos no máximo dois pontos finais consecutivos, sequências como essas podem ser usadas para separar as declarações sucessivas:

{{#rel2abs: ../quok/. | Help:Foo/bar/baz }}Help:Foo/bar/quok
{{#rel2abs: ../../quok | Help:Foo/bar/baz }}Help:Foo/quok
{{#rel2abs: ../../../quok | Help:Foo/bar/baz }}quok
{{#rel2abs: ../../../../quok | Help:Foo/bar/baz }}Error: Invalid depth in path: "Help:Foo/bar/baz/../../../../quok" (tried to access a node above the root node).

#switch

Essa função compara um valor de entrada contra vários casos de teste, retornando uma string associada, se for encontrada uma correspondência.

{{#switch: comparison string
 | case = result
 | case = result
 | ...
 | case = result
 | default result
}}

Exemplos:

{{#switch: baz | foo = Foo | baz = Baz | Bar }}Baz
{{#switch: foo | foo = Foo | baz = Baz | Bar }}Foo
{{#switch: zzz | foo = Foo | baz = Baz | Bar }}Bar

#switch permite que um editor [adicione informações em uma predefinição e esta informação será visível em várias outras predefinições, todas com uma formatação diferente.] [clarification needed][examples needed]

Padrão

O resultado padrão é retornado se nenhuma string case corresponder à string de comparação:

{{#switch: test | foo = Foo | baz = Baz | Bar }}Bar

Nesta sintaxe, o resultado padrão deve ser o último parâmetro e não deve conter um sinal de igual bruto.

{{#switch: test | Bar | foo = Foo | baz = Baz }} →
{{#switch: test | foo = Foo | baz = Baz | B=ar }} →

Alternativamente, o resultado padrão pode ser declarado explicitamente com uma string case de "#default".

{{#switch: comparison string
 | case = result
 | case = result
 | ...
 | case = result
 | #default = default result
}}

Resultados padrão declarados desta forma podem ser colocados em qualquer lugar dentro da função:

{{#switch: test | foo = Foo | #default = Bar | baz = Baz }}Bar

Se o parâmetro "padrão" for omitido e nenhuma correspondência for feita, nenhum resultado é retornado:

{{#switch: test | foo = Foo | baz = Baz }}

Agrupamento de resultados

É possível ter queda por meio de valores, onde vários strings case retornam a mesma string "resultado". Isso minimiza a duplicação.

{{#switch: comparison string
 | case1 = result1
 | case2 
 | case3 
 | case4 = result2
 | case5 = result3
 | case6 
 | case7 = result4
 | #default = default result
}}

Aqui, os casos 2, 3 e 4 retornam result2; os casos 6 e 7 retornam result4

Comportamento de comparação

Tal como acontece com #ifeq, a comparação é feita numericamente se tanto a string de comparação e a string case forem números; ou como uma string case-sensitive de outra forma:

{{#switch: 0 + 1 | 1 = one | 2 = two | three}} → three
{{#switch: {{#expr: 0 + 1}} | 1 = one | 2 = two | three}} → one
{{#switch: a | a = A | b = B | C}} → A
{{#switch: A | a = A | b = B | C}} → C

Uma string case pode estar vazia:

{{#switch: | = Nothing | foo = Foo | Something }}Nothing

Uma vez que a correspondência for encontrada, cases subsequentes são ignorados:

{{#switch: b | f = Foo | b = Bar | b = Baz | }}Bar
Aviso Aviso: Comparações numéricas com #switch e #ifeq não são equivalentes com comparações em expressões (ver também acima):
{{#switch: 12345678901234567 | 12345678901234568 = A | B}} → B
{{#ifexpr: 12345678901234567 = 12345678901234568 | A | B}} → A

Raw equal signs

"Case" strings cannot contain raw equals signs. To work around this, create a template {{=}} containing a single equals sign: =.

Exemplo:

{{#switch: 1=2
 | 1=2 = raw
 | 1<nowiki>=</nowiki>2 = nowiki
 | 1&#61;2 = html
 | 1{{=}}2 = template
 | default
}}html

Note Note: Para um exemplo real simples da utilização desta função, verifique Template:NBA color. Dois exemplos complexos podem ser encontrados em Template:Extension e Template:BOTREQ.

Replacing #ifeq

#switch can be used to reduce expansion depth.

Por exemplo:

  • {{#switch:{{{1}}} |condition1=branch1 |condition2=branch2 |condition3=branch3 |branch4}}

é equivalente a

  • {{#ifeq:{{{1}}}|condition1 |branch1 |{{#ifeq:{{{1}}}|condition2 |branch2 |{{#ifeq:{{{1}}}|condition3 |branch3 |branch4}}}}}}
(i.e. {{#ifeq:{{{1}}}|condition1 |<!--then-->branch1 |<!--else-->{{#ifeq:{{{1}}}|condition2 |<!--then-->branch2 |<!--else-->{{#ifeq:{{{1}}}|condition3 |<!--then-->branch3 |<!--else-->branch4}}}}}})

#time

Código Descrição Saída atual
(Limpe a cache desta página para atualizar)
Ano
Y Ano c/ quatro dígitos. 2014
y Ano c/ dois dígitos. 14
L 1 se for ano bissexto, 0 se não for. 0
o ¹ Código do ano ISO-8601 da semana especificada. ² 2014 ³

¹ Requer o PHP 5.1.0 e mais recente e a revisão rev:45208.
² Isto tem o mesmo valor que Y, exceto que se o número ISO da semana (W) pertence ao ano anterior ou o próximo, esse ano é usado em vez disso.
³ Imprimirá um o literal se ¹ não for cumprido.

Mês
n Índice do mês sem zeros à esquerda. 10
m Índice do mês com zeros à esquerda. 10
M Uma abreviação do nome do mês, no idioma do site. out
F O nome completo do mês no idioma do site. outubro
xg Retorna o nome completo do mês na forma genitiva para idiomas de sites que distinguem entre formas genitivas e nominativas. Esta opção é útil para muitas línguas eslavas como polonês, russo, bielo-russo, tcheco, eslovaco, esloveno, ucraniano, etc. Para o polonês:

(nominativo)

{{#time:d F Y|20 June 2010|pl}} → 20 czerwiec 2010

(genitivo)

{{#time:d xg Y|20 June 2010|pl}} → 20 czerwca 2010

Semana
W Número da semana ISO 8601, com zeros à esquerda. 43
Dia
j Dia do mês, sem zeros à esquerda 24
d Dia do mês, com zeros à esquerda 24
z Dia do ano (Janeiro 1 = 0).
Note Nota: Para obter o dia ISO do ano, adicione 1.
296
D Uma abreviação do dia da semana. Raramente internacionalizado. sex
l Nome completo do dia. Raramente internacionalizado. sexta-feira
N Dia da semana ISO 8601 (Segunda-feira = 1, Domingo = 7). 5
w Número do dia da semana (Domingo = 0, Sábado = 6). 5
Hora
a "am" antes do meio-dia (00:00:00 → 11:59:59), "pm" depois do meio-dia (12:00:00 → 23:59:59). pm
A Versão em maiúsculas do a acima. PM
g Hora no formato de 12 horas, sem zeros à esquerda. 6
h Hora no formato de 12 horas, com zeros à esquerda. 06
G Hora no formato de 24 horas, sem zeros à esquerda. 18
H Hora no formato de 24 horas, com zeros à esquerda. 18
Minutos e segundos
i Minutos depois da hora, com zeros à esquerda. 32
s Segundos após o minuto, com zeros à esquerda. 08
U Segundos desde 1º. de Janeiro de 1970 00:00:00 GMT 1414175528
Fuso horário (a partir de 1.22wmf2)
e Identificador de fuso horário. UTC
I Se desejar que a data esteja ou não no horário de verão. 0
O Diference para o horário de Greenwich (GMT) +0000
P Diference para o horário de Greenwich (GMT), com dois pontos +00:00
T Abreviação do fuso horário. UTC
Z Deslocamento em segundos do fuso horário. 0
Diversos
t Número de dias do mês atual. 31
c Data formatada ISO 8601, equivalente a Y-m-dTH:i:s+00:00. 2014-10-24T18:32:08+00:00
r Data formatada RFC 5322, equivalente a D, j M Y H:i:s +0000, com o nome do dia da semana e o nome do mês não internacionalizados. Fri, 24 Oct 2014 18:32:08 +0000
Calendários não-Gregorianos
Islâmicos
xmj Dia do mês. 29
xmF Nome completo do mês. Dhu al-Hijjah
xmn Índice do mês. 12
xmY Ano completo. 1435
Iraniano (Jalaly)
xij Dia do mês. 2
xiF Nome completo do mês. Aban
xin Índice do mês. 8
xiY Ano completo. 1393
xiy Ano c/ dois dígitos. 93
Hebraico
xjj Dia do mês. 30
xjF Nome completo do mês. Tishrei
xjt Número de dias no mês. 30
xjx Forma genitiva do nome do mês. Tishrei
xjn Número do mês. 1
xjY Ano completo. 5775
Calendário solar tailandês
xkY Ano completo no Calendário solar tailandês.
Note Nota: Para anos anteriores a 1941 as datas na faixa de Janeiro a Março não são adequadamente calculadas.
2557
Ano Minguo/Juche
xoY Ano completo. 103
Calendário de eras do Japão (nengo)
xtY Ano completo. 平成26
Flags
xn Formata o próximo código numérico como número ASCII bruto. No idioma Hundi, {{#time:H, xnH}} produz ०६, 06.
xN Como xn, mas como uma flag alternada, que perdura até o final da string, ou até que a próxima aparição de xN na string.
xr Formata o próximo número como um número romano. Só funciona para números até 10.000
(até 3.000 no pré MediaWiki 1.20).
{{#time:xrY}} → MMXIV
xh Formata o próximo número como um numeral em hebraico. {{#time:xhY}} → ב'י"ד

Esta parser function pega uma data e/ou uma hora (no calendário Gregoriano) e formata-o de acordo com a sintaxe fornecida. Um objeto de data/hora pode ser especificado; o padrão é o valor da palavra mágica {{CURRENTTIMESTAMP}} – isto é, a hora em que a página foi renderizada dentro do HTML.

{{#time: format string }}
{{#time: format string | date/time object }}
{{#time: format string | date/time object | language code }}

A lista de códigos de formatação válidos é apresentada na tabela à direita. Qualquer caractere na string de formatação que não é reconhecido, é passado inalterado; isto aplica-se também aos espaços em branco (o sistema não precisa deles para interpretar os códigos). Há também duas maneiras de escapar os caracteres da string de formatação:

  1. Uma barra invertida seguido por um caractere de formatação é interpretada como um único caractere literal
  2. Caracteres entre aspas duplas são considerados caracteres literais, e as aspas são removidas.

Além disso, o dígrafo xx é interpretada como um literal simples "x".

{{#time: Y-m-d }}2014-10-24
{{#time: [[Y]] m d }}2014 10 24
{{#time: [[Y (year)]] }}2014 (14UTCpmFri, 24 Oct 2014 18:32:08 +0000)
{{#time: [[Y "(year)"]] }}2014 (year)
{{#time: i's" }}32'08"

O objeto data/hora pode ser em qualquer formato aceito pela função do PHP strtotime(). Horas absolutas (eg 20 December 2000) e relativas (eg +20 hours) são aceitas.

{{#time: r|now}}Fri, 24 Oct 2014 18:32:09 +0000
{{#time: r|+2 hours}}Fri, 24 Oct 2014 20:32:09 +0000
{{#time: r|now + 2 hours}}Fri, 24 Oct 2014 20:32:09 +0000

O código de idioma em ISO 639-3 (?) permite que a string seja exibida no idioma escolhido {{#time:d F Y|1988-02-28|nl}}28 februari 1988
{{#time:l|now|uk}}п'ятниця
{{#time:d xg Y|20 June 2010|pl}}20 czerwca 2010

Se você já calculou um timestamp Unix, você pode usá-lo em cálculos de data, pré-pendendo um símbolo @.

{{#time: U | now }}1414175529
{{#time: r|@1414175528}}Fri, 24 Oct 2014 18:32:08 +0000

Aviso Aviso: O intervalo de entrada aceitável é de 1º. de Janeiro de 0111 → 31 de Dezembro de 9999. Para os anos de 100 a 110, a saída é inconsistente, Y e os anos bissextos são como os anos 100-110, r, D, l e U são como interpretar esses anos como 2000-2010.

{{#time: d F Y | 29 Feb 0100 }}01 março 0100
(correto, sem ano bissexto), porém
{{#time: r | 29 Feb 0100 }}Tue, 01 Mar 0100 00:00:00 +0000 (errado, mesmo que 100 seja interpretado como 2000, porque esse é um ano bissexto)
{{#time: d F Y | 15 April 10000 }}Error: Invalid time.
{{#time: r | 10000-4-15 }}Sat, 15 Apr 2000 10:00:00 +0000

Números de ano 0-99 são interpretados como 2000-2069 e 1970-1999, mesmo quando escritos com zeros à esquerda:
{{#time: d F Y | 1 Jan 0069 }}01 janeiro 0069

{{#time: d F Y | 1 Jan 0070 }}01 janeiro 0070

O dia da semana é fornecido para os anos 100-110 e a partir de 1753, para os anos 111-1752 a saída à direita exibe "Unknown" e a saída à esquerda "<>". Como consequencia, a saída à direita não é aceita como entrada para esses anos.

Datas absolutas totais ou parciais podem ser especificadas; a função irá "preencher" as partes da data que não forem especificadas usando os valores 'atuais:

{{#time: Y | January 1 }}2014
Aviso Aviso: O recurso de preenchimento não é consistente; algumas partes são preenchidas com os valores atuais, outras não:

{{#time: Y m d H:i:s | June }}2014 06 24 00:00:00 Fornece o início do dia, porém o dia atual do mês e do ano em curso. {{#time: Y m d H:i:s | 2003 }}2003 10 24 00:00:00 Fornece o início do dia, mas o dia atual do ano.

Com o MediaWiki r86805 - Code Review, um número de quatro dígitos é sempre interpretado como um ano, nunca como horas e minutos:
{{#time: Y m d H:i:s | 1959 }}1959 10 24 00:00:00

Um número de seis dígitos é interpretado como horas, minutos e segundos, se possível, mas de outra forma, como um erro (não, por exemplo, um ano e mês):
{{#time: Y m d H:i:s | 195909 }}2014 10 24 19:59:09 A entrada é tratada como uma hora em vez de um código de ano + mês.
{{#time: Y m d H:i:s | 196009 }}Error: Invalid time. Embora 19:60:09 não é uma hora válida, 196009 não é interpretado como setembro de 1960.

A função executa uma certa quantidade de matemática de data:

{{#time: d F Y | January 0 2008 }}31 dezembro 2007
{{#time: d F | January 32 }}Error: Invalid time.
{{#time: d F | February 29 2008 }}29 fevereiro
{{#time: d F | February 29 2007 }}01 março
{{#time:Y-F|now -1 months}}2014-setembro

O comprimento total das strings de formato das chamadas de #time se limita a 6000 caracteres [1].

Time Zone issue

There is a bug in this #time parser function (more specifically in PHP DateTime) that does not allow the passing-in of non-integers as relative time zone offsets. This issue does not apply when using an on-the-hour time zone, such as EDT. For example:

  • {{#time:g:i A | -4 hours }} ==> 2:32 PM

Entretanto, a Venezuela está a -4.5 horas do UTC, e, assim, usar seu fuso horário não permitirá normalmente o cálculo correto de um deslocamento de fuso horário relativo. Veja o que acontece:

  • {{#time:g:i A | -4.5 hours }} ==> 3:32 AM

Para contornar este problema, basta converter o tempo em minutos ou segundos, assim:

  • {{#time:g:i A | -270 minutes }} ==> 2:02 PM
  • {{#time:g:i A | -16200 seconds }} ==> 2:02 PM

(Tim Starling, o desenvolvedor desta função, forneceu a sintaxe exata para esta solução.)


#timel

Esta função é idêntica a {{#time: ... }}, exceto que ele usa o horário local da wiki (como definido em $wgLocaltimezone) quando nenhuma data é indicada.

{{#time: Y-m-d }}2014-10-24
{{#timel: Y-m-d }}2014-10-24
{{#time: Y F d h:i:s}}2014 outubro 24 06:32:08
{{#timel: Y F d h:i:s}}2014 outubro 24 06:32:08

#titleparts

Esta função separa um título de página em segmentos baseados em barras, em seguida, retorna alguns desses segmentos como saída.

{{#titleparts: pagename | number of segments to return | first segment to return }}

Se o parâmetro número de segmentos não for especificado, o padrão é "0", que retorna todos os segmentos do primeiro segmento (incluído). Se o parâmetro primeiro segmento não for especificado ou for "0", o padrão é "1":

{{#titleparts: Talk:Foo/bar/baz/quok }}Talk:Foo/bar/baz/quok
{{#titleparts: Talk:Foo/bar/baz/quok | 1 }}Talk:Foo
{{#titleparts: Talk:Foo/bar/baz/quok | 2 }}Talk:Foo/bar
{{#titleparts: Talk:Foo/bar/baz/quok | 2 | 2 }}bar/baz
{{#titleparts: Talk:Foo/bar/baz/quok | | 2 }}bar/baz/quok

Os valores negativos são aceitos por ambos os valores. Os valores negativos para o número de segmentos 'retira' efetivamente segmentos a partir do final da string. Os valores negativos para o primeiro segmento se traduz em começar com este segmento a contar da direita:

{{#titleparts: Talk:Foo/bar/baz/quok | -1 }}Talk:Foo/bar/baz Retira um segmento a partir do final da string. Ver também {{BASEPAGENAME}}.
{{#titleparts: Talk:Foo/bar/baz/quok | -4 }}Retira todos os quatro segmentos a partir do final da string
{{#titleparts: Talk:Foo/bar/baz/quok | -5 }}Retira 5 segmentos a partir do final da string (mais do que existe)
{{#titleparts: Talk:Foo/bar/baz/quok | | -1 }}quok Retorna o último segmento. Ver também {{SUBPAGENAME}}.
{{#titleparts: Talk:Foo/bar/baz/quok | -1 | 2 }}bar/baz Retira um segmento a partir do final da string, em seguida, retorna o segundo segmento e mais além
{{#titleparts: Talk:Foo/bar/baz/quok | -1 | -2 }}baz Inicia a cópia no penúltimo elemento; retira um segmento a partir do final da string

A string é dividida em um máximo de 25 vezes; outras barras são ignoradas e o elemento 25 irá conter o resto da string. A string é também limitada a 255 caracteres, então ela é tratada como um título de página:

{{#titleparts: a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/aa/bb/cc/dd/ee | 1 | 25 }}y/z/aa/bb/cc/dd/ee

Se por qualquer motivo você precisava empurrar esta função ao seu limite, embora muito improvável, é possível contornar o limite de divisão de 25 pela chamada da função de aninhamento:

{{#titleparts: {{#titleparts: a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/aa/bb/cc/dd/ee| 1 | 25 }} | 1 | 2}}z

Aviso Aviso: Você pode usar #titleparts como um simples "analisador e conversor de strings", mas saiba que ela retorna a primeira substring capitalizada.

{{#titleparts: one/two/three/four|1|1 }}One
{{#titleparts: one/two/three/four|1|2 }}two
  • Se letras minúsculas são necessárias, use a função lc: para controlar a saída.
{{lc: {{#titleparts: one/two/three/four|1|1 }} }}one
  • Você pode preceder uma barra 'simulada' no início da string para obter a capitalização correta da primeira substring (maiúscula ou minúscula). Use |2 em vez de |1 para retorno do primeiro segmento.
{{#titleparts: /one/two/three/four|1|2 }}one
{{#titleparts: /One/two/three/four|1|2 }}One

Aviso Aviso: Certos caracteres que são ilegais em um título de página farão com que #titleparts não analise a string.

{{#titleparts: {one/two} | 1 | 1 }}{one/two}. Não produz o esperado: {one

Aviso Aviso:

{{#titleparts: [[page]]/123 | 1 | 2 }}page/123

Aviso Aviso: Esta função não se degrada normalmente se a sua entrada ultrapassar 255 caracteres. Se a string digitada é de 256 caracteres ou mais, esta função simplesmente descarta a string de volta para você.

Análise de strings

Uma extensão está disponível para análise de strings adicional, consulte Extension:StringFunctions.

Pontos gerais

Substituição

Funções do analisador podem ser substituídas prefixando o caractere hash (#) com subst::

{{subst:#ifexist: Help:Extension:ParserFunctions/pt-br | [[Help:Extension:ParserFunctions/pt-br]] | Help:Extension:ParserFunctions/pt-br }} → o código [[Help:Extension:ParserFunctions/pt-br]] será inserida no wikitexto desde que a página Help:Extension:ParserFunctions/pt-br exista.
Aviso Aviso: Os resultados das funções do analisador substituídas são indefinidos se as expressões contiverem código volátil não substituído como variáveis ou outras funções do analisador. Para obter resultados consistentes, todo o código volátil na expressão a ser avaliada deve ser substituído. Consulte Help:Substitution.

Redirecionamentos

Especially {{#time:…|now-…}} could be handy in redirects to pages including dates, but this does not work.

Escaping pipe characters in tables

Parser functions will mangle wikitable syntax and pipe characters (|), treating all the raw pipe characters as parameter dividers. To avoid this, most wikis create the template Template:! with its contents only a raw pipe character (|) or use the {{!}} magic word which is available since MW 1.24. This 'hides' the pipe from the MediaWiki parser, ensuring that it is not considered until after all the templates and variables on a page have been expanded. It will then be interpreted as a table row or column separator. Alternatively, raw HTML table syntax can be used, although this is less intuitive and more error-prone.

You can also escape the pipe character for display as a plain, uninterpreted character using an HTML entity: &#124; .

Descrição Você digita O resultado é
Escaping pipe character as table row/column separator (most wikis)
{{!}}
|
Escaping pipe character as a plain character
&#124;
|


Remoção de espaço vazio

Whitespace, including newlines, tabs, and spaces, is stripped from the beginning and end of all the parameters of these parser functions. If this is not desirable, comparison of strings can be done after putting them in quotation marks.

{{#ifeq: foo           |           foo | equal | not equal }}equal
{{#ifeq: "foo          " | "          foo" | equal | not equal }}not equal

For preventing trimming then- and else-parts, see m:Template:If. Some people use also <nowiki> </nowiki> instead of spaces.

Ver também