Ajuda:Funções sintáticas: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
extendendo documentação, -guia
Linha 76:
 
====Exemplos====
{| class="wikitable"
{| cellpadding="6px" border=1 style="border:1px solid #C0C0C0; border-collapse:collapse;"
! ''Operador''
! ''Operação''
Linha 167:
|}
 
=== #se: ou #if: ===
 
A função <tt>se</tt> ou <tt>if</tt> é uma estrutura do tipo se-então-senão. A sintaxe é:
 
:{&#123; #ifse: ''&lt;condição&gt;'' | ''&lt;então texto&gt;'' | ''&lt;senão texto&gt;'' }}
:{&#123; #if: ''&lt;condição&gt;'' | ''&lt;então texto&gt;'' | ''&lt;senão texto&gt;'' }}
 
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.
Linha 180 ⟶ 181:
<nowiki> | | |</nowiki>
<nowiki> | | |</nowiki>
<nowiki>{{ #ifse: {{{parâmetro|}}} | Parâmetro é definido. | Parâmetro não definido ou vazio}} </nowiki>
 
Note que a função <tt>ifse</tt> '''não''' suporta sinais de "=" ou expressões matemáticas. <nowiki>{{#ifse: 1 = 2|sim|não}}</nowiki> irá devolver "{{#se: 1 = 2|sim|não}}", porque a string "1 = 2" não é vazia.
 
=== #seigual: ou #ifeq: ===
 
<tt>seigual</tt> (ou <tt>ifeq</tt>) compara duas strings ou números, e retorna outra string dependendo do resultado da comparação. A sintaxe é:
 
<nowiki>{{</nowiki> #ifeqseigual: ''&lt;texto 1&gt;'' | ''&lt;texto 2&gt;'' | ''&lt;igual texto&gt;'' | ''&lt;não igual texto&gt;'' }}
 
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:
 
:<tt>{&#123; #ifeqseigual: +07 | 007 | 1 | 0 &#125;}</tt> resulta {{#ifeqseigual: +07 | 007 | 1 | 0 }}
:<tt>{&#123; #ifeqseigual:"+07"|"007"| 1 | 0 &#125;}</tt> resulta {{#ifeqseigual:"+07"|"007"| 1 | 0 }}
 
A comparação de uma string é caso-sensitivo:
:<tt>{&#123; #ifeqseigual: A | a | 1 | 0 &#125;}</tt> resulta {{#ifeqseigual: A | a | 1 | 0 }}
 
=== #ifexist:seerro ou #iferror===
 
:<tt><nowiki>{{#seerro:</nowiki> ''expressão'' <nowiki>|</nowiki> ''valor se verdadeiro'' <nowiki>|</nowiki> ''valor se falso'' <nowiki>}}</nowiki></tt>
<tt>ifexist</tt> retorna um de dois resultados, baseado se existe ou não um artigo ou página com o título especificado. Exemplos:
:<tt><nowiki>{{#iferror:</nowiki> ''expressão'' <nowiki>|</nowiki> ''valor se verdadeiro'' <nowiki>|</nowiki> ''valor se falso'' <nowiki>}}</nowiki></tt>
 
Esta função determina se ocorre um erro no cálculo da expressão. Se ocorrer um erro, retorna o <tt>''valor se verdadeiro''</tt>. Se não, retorna o <tt>''valor se falso''</tt>.
:<code><nowiki>{{#ifexist:Wikipédia|Sim|Não}}</nowiki></code> resulta {{#ifexist:Wikipédia|Sim|Não}}, porque [[Wikipédia]] existe
 
:<code><nowiki>{{#ifexist:wikipédia|Sim|Não}}</nowiki></code> resulta {{#ifexist:wikipédia|Sim|Não}}, porque [[wikipédia]] é a forma canônica do artigo [[Wikipédia]]
:<codett><nowiki>{{#ifexistseerro:WiKiPeDiA {{#expr: 1 + 2 }} |Sim verdadeiro |Não falso}}</nowiki></codett>&nbsp;&rarr; resulta'''{{#seerro: {{#ifexistexpr:WiKiPeDiA|Sim|Não}} porque1 o+ artigo2 [[WiKiPeDiA]]}} não| existeverdadeiro | falso}}'''
:<tt><nowiki>{{#seerro: {{#expr: 1 + X }} | verdadeiro | falso}}</nowiki></tt>&nbsp;&rarr; '''{{#seerro: {{#expr: 1 + X }} | verdadeiro | falso}}'''
:<code><nowiki>{{#ifexist:m:Help:Calculation|Sim|Não}}</nowiki></code> resulta {{#ifexist:m:Help:Calculation|Sim|Não}} entretanto [[m:Help:Calculation]] existe, porque a função não interpreta o prefixo de interwiki.
::porque <tt><nowiki>{{#expr: 1 + X }}</nowiki></tt>&nbsp;&rarr; '''{{#expr: 1 + X }}'''
 
Um erro ocorre quando o resultado do cálculo contém um objecto HTML com <tt>class="error"</tt>. Este objecto pode ser gerado por outras funções do analisador sintáctico, como <tt>[[##expr|#expr]]</tt>, <tt>[[##time|#time]]</tt> e <tt>[[##rel2abs|#rel2abs]]</tt>, 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 <tt>''valor se falso''</tt> e não ocorrer um erro, é retornado o resultado da <tt>''expressão''</tt>.
 
:<tt><nowiki>{{#seerro: {{#expr: 1 + 2 }} | verdadeiro }}</nowiki></tt>&nbsp;&rarr; '''{{#seerro: {{#expr: 1 + 2 }} | verdadeiro }}'''
:<tt><nowiki>{{#seerro: {{#expr: 1 + X }} | verdadeiro }}</nowiki></tt>&nbsp;&rarr; '''{{#seerro: {{#expr: 1 + X }} | verdadeiro }}'''
 
Se também for omitido o <tt>''valor se verdadeiro''</tt> e ocorrer um erro, é retornada uma expressão vazia:
 
:<tt><nowiki>{{#seerro: {{#expr: 1 + 2 }} }}</nowiki></tt>&nbsp;&rarr; ''' {{#seerro: {{#expr: 1 + 2 }} }}'''
:<tt><nowiki>{{#seerro: {{#expr: 1 + X }} }}</nowiki></tt>&nbsp;&rarr; ''' {{#seerro: {{#expr: 1 + X }} }}'''
 
=== #seexiste ou #ifexist: ===
 
<tt>seexiste</tt> (ou <tt>ifexist</tt>) retorna um de dois resultados, baseado se existe ou não um artigo ou página com o título especificado. Exemplos:
 
:<code><nowiki>{{#ifexistseexiste:Wikipédia|Sim|Não}}</nowiki></code> resulta {{#ifexistseexiste:Wikipédia|Sim|Não}}, porque [[Wikipédia]] existe
:<code><nowiki>{{#ifexistseexiste:wikipédia|Sim|Não}}</nowiki></code> resulta {{#ifexistseexiste:wikipédia|Sim|Não}}, porque [[wikipédia]] é a forma canônica do artigo [[Wikipédia]]
:<code><nowiki>{{#seexiste:WiKiPeDiA|Sim|Não}}</nowiki></code> resulta {{#seexiste:WiKiPeDiA|Sim|Não}} porque o artigo [[WiKiPeDiA]] não existe
:<code><nowiki>{{#ifexistseexiste:m:Help:Calculation|Sim|Não}}</nowiki></code> resulta {{#ifexistseexiste:m:Help:Calculation|Sim|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.
Linha 236 ⟶ 260:
:<tt><nowiki>{{#rel2abs:</nowiki> ../../../../quatro | {{ns:12}}:Um/dois/três<nowiki>}}</nowiki></tt>&nbsp;&rarr; '''{{#rel2abs: ../../../../quatro | {{ns:12}}:Um/dois/três}}
 
=== #seexpr: ou #ifexpr: ===
 
<tt>seexpr</tt> (ou <tt>ifexpr</tt>) computa uma expressão matemática e retorna uma de duas strings como resultado
 
{&#123;#ifexprseexpr: ''&lt;expressão&gt;'' | ''&lt;então texto&gt;'' | ''&lt;senão texto&gt;'' &#125;}
 
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 <tt>expr</tt>.
 
;O ''senão texto'' também é mostrado para expressões vazias&#58;
:<code><nowiki>{&#123;{#ifexprseexpr: {&#123;ns:0&#125;}|Presente|'''ou então'''&#125;}}</nowiki></code> resulta {{#ifexprseexpr: {{ns:0}}|Presente|'''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)&#58;
:<code>{&#123;#ifexprseexpr: 1/{&#123;#ifeqseigual: {&#123;ns:4&#125;}|Meta|1|0&#125;}&#125;}</code> {{#ifexprseexpr: 1/{{#ifeqseigual: {{ns:4}}|Meta|1|0}}}}
:<code>{&#123;#ifexprseexpr: 1/{&#123;#ifeqseigual: {&#123;ns:4&#125;}|Meta|0|1&#125;}&#125;}</code> {{#ifexprseexpr: 1/{{#ifeqseigual: {{ns:4}}|Meta|0|1}}}}
:<code>{&#123;#ifse:<nowiki>{{#ifexprseexpr: 1=2}}</nowiki>|wrongerrado|correctcorreto&#125;}</code> {{#if:{{#ifexprseexpr: 1=2}}|wrongerrado|correctcorreto}}
:<code>{&#123;#ifse:<nowiki>{{#ifexprseexpr: 1E2}}</nowiki>|wrongerrado|correctcorreto&#125;}</code> {{#if:{{#ifexprseexpr: 1E2}}|wrongerrado|correctcorreto}}
:<code>{&#123;#ifse:<nowiki>{{#ifexprseexpr: 1/0}}</nowiki>|wrongerrado|correctcorreto&#125;}</code> {{#if:{{#ifexprseexpr: 1/0}}|wrongerrado|correctcorreto}}
:<code>{&#123;#ifse:<nowiki>{{#ifexprseexpr: a=b}}</nowiki>|wrongerrado|correctcorreto&#125;}</code> {{#if:{{#ifexprseexpr: a=b}}|wrongerrado|correctcorreto}}
 
=== #switch: ===
Linha 587 ⟶ 611:
O objecto <tt>''data/hora''</tt> pode ter qualquer formato aceite pela função [http://uk3.php.net/manual/en/function.strtotime.php strtotime()] do PHP. São aceites objectos absolutos (<tt>20 December 2000</tt>) e relativos (<tt>+20 hours</tt>).
 
[[Imagem:Attention niels epting.svg|18px|link=|alt=]] '''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 incorrectamenteincorretoamente:
 
:<tt><nowiki>{{#time: d F Y | 15 April 0099 }}</nowiki></tt>&nbsp;&rarr; '''{{#time: d F Y | 15 April 0099 }}'''