Privacy Policy Cookie Policy Terms and Conditions Ajuda:ParserFunctions - Wikipédia

Ajuda:ParserFunctions

Origem: Wikipédia, a enciclopédia livre.

Esta extensão do MediaWiki é uma coleção de funções de análise sintática (ParserFunctions). Essas funções possuem uma cerquilha (#) na frente de seus nomes, adquirindo, portanto, a seguinte sintaxe:

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

Índice

[editar] Funções

Este módulo define sete funções existentes atualmente: expr, if, ifeq, ifexist, ifexpr, switch, and time.

[editar] #expr:

A função expr computa matematicamente expressões baseadas na permutação de números (ou variáveis/parâmetros que resultam em números) e operadores. Ele não funciona com strings (cadeias de caracteres); para tal propósito, utilize a função ifeq. A sintaxe é:

{{ #expr: expressão }}

Segue abaixo uma lista de operadores suportados. Para maiores detalhes sobre a precedência de operadores, veja m:Help:Calculation.

De maneira geral: (1) grupos (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 os da esquerda para direita. Como sempre, alguns parênteses redundantes são melhores do que um código conciso e errado.

Operador Operação Exemplo
nenhum {{#expr: 123456789012345}} = 1.2345678901234E+14
{{#expr: 0.000001}} = 1E-06
( ) 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

Os operadores booleanos consideram 0 como "falso" e qualquer outro número como "verdadeiro"; uma saída "verdadeira" é mostrada como 1.

Números utilizam "." 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 nas saídas; para maiores detalhes veja m:Help:Calculation.

[editar] #if:

A função if é uma estrutura do tipo se-então-senão. A sintaxe é:

{{ #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, a condição for falsa, a função devolve um texto vazio.

Um examplo:

                     {{Predefinição|parâmetro=algo}} {{Predefinição}} {{Predefinição|parâmetro=}}
                                   |                        |                |
                                   |                        |                |
                                   |                        |                |
{{ #if: {{{parâmetro|}}} | Parâmetro é definido. | Parâmetro não definido ou vazio}} 

Note que a função if não suporta sinais de "=" sou expressões matemáticas. {{#if: 1 = 2|sim|não}} irá devolver "sim", porque a string "1 = 2" não é vazia.

[editar] #ifeq:

ifeq compara duas strings ou números, e retorna outra string dependendo do resultado da comparação. A sintaxe é:

{{ #ifeq: <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 cadeira de caracteres que não podem ser intepretadas como números deve-se adicionar aspas a elas:

{{ #ifeq: +07 | 007 | 1 | 0 }} resulta 1
{{ #ifeq:"+07"|"007"| 1 | 0 }} resulta 0

A comparação de uma string é caso-sensitivo:

{{ #ifeq: A | a | 1 | 0 }} resulta 0

[editar] #ifexist:

ifexist retorna um de dois resultados, baseado se existe ou não um artigo ou página com o título especificado. Exemplos:

{{#ifexist:Wikipédia|Sim|Não}} resulta Sim, porque Wikipédia existe
{{#ifexist:wikipédia|Sim|Não}} resulta Sim, porque wikipédia é a forma canônica do artigo Wikipédia
{{#ifexist:WiKiPeDiA|Sim|Não}} resulta Não porque o artigo WiKiPeDiA não existe
{{#ifexist: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.

[editar] #ifexpr:

ifexpr computa uma expressão matemática e retorna uma de duas strings como resultado

{{#ifexpr: <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:
{{#ifexpr: {{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):
{{#ifexpr: 1/{{#ifeq: {{ns:4}}|Meta|1|0}}}} Division by zero
{{#ifexpr: 1/{{#ifeq: {{ns:4}}|Meta|0|1}}}}
{{#if:{{#ifexpr: 1=2}}|wrong|correct}} correct
{{#if:{{#ifexpr: 1E2}}|wrong|correct}} wrong
{{#if:{{#ifexpr: 1/0}}|wrong|correct}} wrong
{{#if:{{#ifexpr: a=b}}|wrong|correct}} wrong

[editar] #switch:

switch compara um único valor de comparação com vários outros, retornando uma string se encontrar um valor igual. A sintaxe é basicamente:

{{ #switch: <valor de comparação>
| <valor1> = <resultado1>
| <valor2> = <resultado2>
| ...
| <valorn> = <resultadon>
| <resultado padrão>
}}

switch irá procurar por cada valor passado até que um valor coincida com o valor de comparação. Quando encontrado, o resultado para aquele valor é retornado (o texto escrito após o sinal de igual). Se nenhum resultado for encontrado e o último item não possuir sinal de igualdade, a função então o retornará como resultado padrão. Se o seu resultado necessitar obrigatoriamente de um sinal de igualdade, você poderá utilizar #default:

{{ #switch: <valor de comparação>
| <valor> = <resultado>
| #default = <default resultado>
}}

Note que é possível também abortar valores (reduzindo a necessidade de resultados duplicados). Por exemplo:

{{ #switch: <valor de comparação>
| <valor1>
| <valor2>
| <valor3> = <resultado3>
| ...
| <valorn> = <resultadon>
| <resultado padrão>
}}

Note que o valor1 e valor2 não possuem o sinal de igualdade. Se eles forem encontrados, eles darão o resultado do valor3 (isto é, o que está no resultado3).

Assim como para #ifeq:, a comparação é numérica quando possível:
{{ #switch: +07 | 7 = Sim | 007 = Bond | Não }} resulta Sim
{{ #switch:"+07"|"7"= Sim |"007"= Bond | Não }} resulta Não
O valor encontrado pode ser vazio; assim sendo, as seguintes estruturas são equivalentes:
{{ #if: {{ns:0}} | não vazio | vazio }} resulta vazio
{{ #switch:{{ns:0}}|=vazio|não vazio }} resulta vazio

Compração entre strings são caso-sentitivo:

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

[editar] #time:

#time é uma função de formatação de tempo e data. A sintaxe é

{{ #time: formato }}

ou

{{ #time: formato | tempo }}

Se o tempo não é especificado, o tempo em cada artigo é convertido para o HTML que é utilizado. O parâmetro formato é um formato de string similar ao utilizado pelas datas PHP.

Os seguintes formatos possuem o mesmo significado que em PHP. Diferenças significantes do comportamento do PHP, tal como internacionalização (i.e. idioma e diferenças locais), devem ser consideradas como erro das ParserFunctions e deverão ser reportadas. Todos os códigos de formato numérico retornam números de acordo com o idioma local, use o xn código descrito abaixo para verificar isso.

Código Descrição Saída de exemplo Saída real
d O dia do mês, acompanhado de zero. 04 22
D Uma abreviação do dia da semana. Seg Sex
j O dia do mês, não acompanhado de zero. 3 22
l O nome completo do dia da semana. Segunda-feira Sexta-feira
N O dia da semana segundo cód. ISO 8601 1 (para Segunda) a 7 (para o Domingo) 5
w Número do dia da semana 0 (para Domingo) até 6 (para o Sábado) 5
z O dia do ano (iniciando do 0) 0 até 365 355
W Número da semana (ISO 8601) 51
F O nome completo do mês. Janeiro Dezembro
m O número do mês, acompanhado de zero. 01 até 12 12
M A abreviação do nome do mês. Jan Dez
n O número do mês, não acompanhado de zero 1 até 12 12
t Número de dias do mês 28 até 31 31
L Ano bissexto 1 se sim, senão 0 0
Y O ano com 4 dígitos 2006 2006
y O ano com 2 dígitos. 06 06
a am ou pm am
A AM ou PM AM
g horas (formato de 12 horas) sem acompanhar zero 1 até 12 6
G horas (formato de 24 horas) sem acompanhar zero 0 até 23 6
h horas (formato de 12 horas) acompanhada por zero 01 até 12 06
H A hora do dia, acompanhada por zero 00 até 23 06
i O minuto, acompanhado de zero. 00 até 59 11
s O segundo, acompanhado de zero 00 até 59 24
c data no formato ISO 8601 2006-12-22T06:11:24+00:00
r data formatada RFC 2822 Fri, 22 Dec 2006 06:11:24 +0000
U segundos desde 1 de Janeiro de 1970 00:00:00 GMT 1166767884

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 ".

[editar] Exemplos

  • {{#time:j F Y|-14 days}} resulta 8 Dezembro 2006 (14 dias atrás)
  • {{#time:H:i|+6 hours}} resulta 12:11 (6 horas depois que o UTC)
  • {{#time:H:i|8:15 +6 hours}} resulta 14:15
  • {{#time:m/Y|-1 months}}resulta 11/2006 (1 mês atrás)

[editar] Faixa

A faixa de funcionamento correto é 1-1-1970 00:00:01 até 19-1-2038 03:14:07 (1 até 231 1 segundos após o início de 1970). Veja também Problema do ano 2038.

[editar] Advertências

[editar] Tabelas

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

  • Utilizar uma predefinição que seja constituída apenas de uma barra vertical, tal como {{!}}.
  • Utilizar sintaxe html.

[editar] Expressões

  • div não é a divisão inteira, utilize / para divisão de números reais.
  • mod utiliza o operador PHP %, que é diferente do operador módulo em outras linguagens de programação
  • mod algumas vezes retornas resultados errados para a mesma entrada de valores, veja 6356 e m:ParserFunctions/MOD10000. valores menores que 1E+12 aparentemente não são afetadas.
  • Resultados válidos de #expr: como 1E-07 ainda não são suportados como valor de entrada
    {{#expr:1E-07}} resulta Expression error: Unrecognised word "e".
  • 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.

[editar] Espaços brancos de condicionais

Se você apenas deseja inserir espaços em brancos, você pode utilizar a entidade do HTML &#32;, que insere " ".

se você deseja novas linhas ou outros espaços em branco, você pode inserir caracteres não imprimíveis entre a barra vertical e o espaço em branco:

primeiro parágrafo. {{#if:{{{paragráfo}}}|<nowiki /> 

segundo parágrafo.}}

primeiro parágrafo.

segundo parágrafo.

[editar] Veja também

[editar] Ligações externas

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu