Jump to content

Help:Funções sintáticas em predefinições

From mediawiki.org
This page is a translated version of the page Help:Parser functions in templates and the translation is 100% complete.
PD Nota: Ao editar esta página, você concorda em publicar a sua contribuição no âmbito da licença CC0. Veja as páginas de ajuda do domínio público para mais informações. PD

Ao aplicar funções do analisador sintático aos parâmetros das predefinições, pode usar uma barra vertical ("|") para fornecer um valor por omissão, que será adotado como valor se o parâmetro não for passado (estiver indefinido). Usado numa função #if, o texto não expandido do parâmetro indefinido é avaliado como verdadeiro, o que pode ser um resultado inesperado.

Testar o valor de um parâmetro com, e sem, valores por omissão
Parâmetro {{{1}}}, {{{param}}} {{{1|}}}, {{{param|}}} {{#if:<parâmetro>|True|False}}
Descrição Exemplo, sem nome e com nome {{{1}}}, {{{param}}} {{{1|}}}, {{{param|}}}
Não é passado. Mais apropriado para parâmetros passados por nome. {{template}} {{{1}}} True False
definido, mas nulo/vazio {{template|}}, {{template|1=}}, {{template|param=}} False False
É definido com valor, não vazio, não nulo. {{template|value}}, {{template|1=value}}, {{template|param=value}} value value True True
  • {{{1}}}
Exemplo A
{{#if: {{{1}}} | Parâmetro 1 não está definido, ou é definido e não nulo/não vazio. | Parâmetro 1 é nulo. Ele contém só seqüência(s) de caracteres vazia(s) ou quebra(s) de espaço, etc}}
Resultado
Parâmetro 1 não está definido, ou é definido e não nulo/não vazio.
  • {{{1|}}}
Exemplo B
{{#if: {{{1|}}} | Parâmetro 1 está definido e é não nulo/não vazio. | Parâmetro 1 não está definido, ou é definido mas nulo. Ele contém apenas seqüência(s) de caracteres vazia(s) ou quebra(s) de espaço, etc}}
Resultado
Parâmetro 1 não está definido, ou é definido mas nulo. Ele contém apenas seqüência(s) de caracteres vazia(s) ou quebra(s) de espaço, etc

O segundo uso ({{{1|}}}, exemplo B) com padrão vazio presente é muitas vezes a forma desejada para lidar com situações em que existe um parâmetro, mas é composto apenas de espaços vazios.

Testar e passar parâmetros indefinidos (não passados)

Para distinguir entre um parâmetro passado mas possivelmente vazio e um parâmetro indefinido (não passado), compare-o a si próprio usando {{#ifeq:}} e use "diferentes valores por omissão". Os valores por omissão usados são indiferentes desde que sejam distintos, portanto tipicamente usam-se valores curtos. Os seguintes exemplos são todos equivalentes:

{{#ifeq:{{{v|+}}}|{{{v|-}}}| v foi definido (e pode estar vazio) | v não foi definido }}
{{#ifeq:{{{v|}}}|{{{v|-}}}| v foi passado (e pode estar vazio) | v não foi definido }}
{{#ifeq:{{{v|}}}|{{{v}}}| v foi definido (e pode estar vazio) | v não foi definido }}

Em casos raros, uma predefinição se comporta de maneira diferente quando um parâmetro não é especificado em relação a quando é especificado, mas vazio. Quando esta predefinição é usada por uma predefinição de envoltório (que usa o mesmo conjunto de parâmetros com nome), uma forma de assegurar que parâmetros indefinidos permaneçam indefinidos é a seguinte (a técnica também funciona com parâmetros numerados):

{{wrapped_template|
normal_parameter={{{normal_parameter|}}}|
sensitive_parameter{{#if:{{{sensitive_parameter|}}}||NULL}}={{{sensitive_parameter}}}
}}

Se normal_parameter for passado e não estiver vazio, wrapped_template recebe-o em todos os casos. Se normal_parameter for passado mas estiver vazio, e se não for passado, wrapped_template recebe um normal_parameter vazio.

Em contraste, se sensitive_parameter for passado definido, wrapped_template receberá um parâmetro definido; se sensitive_parameter não for passado e estiver indefinido, o #if altera o nome do parâmetro para sensitive_parameterNULL. Para que o comportamento seja o esperado, este nome de parâmetro com sufixo tem de não ter significado para wrapped_template.

Ver também