Ajuda: Funções do analisador nos modelos
| Nota: Quando modificais esta página, estais a aceitar que a vossa contribuição se publique no marco de CC0. Olhem Páginas de ajuda de domínio público para mais informação. |
Quando aplica ParserFunctions aos parâmetros do modelo, pode utilizar uma barra vertical ("|") para fornecer um valor predefinido, que é utilizado quando um parâmetro não está definido. Utilizado numa função do analisador #if, o texto não expandido do parâmetro indefinido é avaliado como true, o que pode ser um resultado inesperado.
| 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 | |
| É passado, mas vazio ou com valor nulo. | {{template|}}, {{template|1=}}, {{template|param=}}
|
False | False | ||
| É passado 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}}} | O parâmetro 1 não é passado, ou é passado e tem valor não nulo/não vazio. | O parâmetro 1 é nulo. Só contém string(s) vazias (texto vazio) ou breaking space(s) (espaços normais que permitem quebra de linha) etc.}}
- Resultado
O parâmetro 1 não é passado, ou é passado e tem valor não nulo/não vazio.
{{{1|}}}
- Exemplo B
{{#if: {{{1|}}} | O parâmetro 1 é passado e tem valor não nulo/não vazio. | O parâmetro 1 não é passado, ou é passado mas tem valor nulo. Contém só string(s) vazias (texto vazio) ou breaking space(s) (espaços normais que permitem quebra de linha) etc.}}
- Resultado
O parâmetro 1 não é passado, ou é passado mas tem valor nulo. Contém só string(s) vazias (texto vazio) ou breaking space(s) (espaços normais que permitem quebra de linha) etc.
O segundo caso ({{{1|}}}, exemplo B), em que o parâmetro é passado e vazio, é frequentemente a forma desejada para lidar com as situações em que o parâmetro existe, mas consiste só de espaço vazio.
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 passado (e pode estar vazio) | v não foi passado }}{{#ifeq:{{{v|}}}|{{{v|-}}}| v foi passado (e pode estar vazio) | v não foi passado }}{{#ifeq:{{{v|}}}|{{{v}}}| v foi passado (e pode estar vazio) | v não foi passado }}
Em casos raros, uma predefinição pode comportar-se de formas diferentes quando não é passado um parâmetro e quando este é passado mas está vazio. Se a predefinição for usada dentro de uma segunda predefinição (que use os mesmos parâmetros e com o mesmo nome), uma forma de garantir que os parâmetros não passados continuam indefinidos é a seguinte (a técnica também funciona para 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, só 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.