Nápověda:Funkce analyzátoru v šablonách
Poznámka: Úpravou této stránky souhlasíte s uvolněním vašeho příspěvku pod licencí CC0. Více informací získáte na stránce nápovědy veřejné domény. |
Při použití ParserFunctions na parametry šablony lze použít symbol svislé čáry ("|") k poskytnutí výchozí hodnoty, která se použije, když parametr není definován. Při použití ve funkci analyzátoru #if bude neexpandovaný text z parametru undefined vyhodnocen jako pravdivý, což může být neočekávaný výsledek.
Parametr | {{{1}}}, {{{param}}} | {{{1|}}}, {{{param|}}} | {{#if:<parametr>|True|False}} | ||
---|---|---|---|---|---|
Popis | Příklad, nepojmenované a pojmenované | {{{1}}}, {{{param}}} | {{{1|}}}, {{{param|}}} | ||
Nedefinováno. Vhodnější pro použití v pojmenovaných parametrech. | {{template}}
|
{{{1}}} | True | False | |
Definováno, ale prázdné nebo null. | {{template|}} , {{template|1=}} , {{template|param=}}
|
False | False | ||
Definované, neprázdné a nenulové. | {{template|value}} , {{template|1=value}} , {{template|param=value}}
|
value | value | True | True |
{{{1}}}
- Ukázka A
{{#if: {{{1}}} | Parametr 1 není definován nebo je definován a není nulový/neprázdný. | Parametr 1 je nulový. Obsahuje pouze prázdné řetězce nebo mezery atd.}}
- Výsledek
Parametr 1 není definován nebo je definován a není nulový/neprázdný.
{{{1|}}}
- Ukázka B
{{#if: {{{1|}}} | Parametr 1 je definován a není nulový/neprázdný. | Parametr 1 není definován, nebo je definován, ale má hodnotu null. Obsahuje pouze prázdné řetězce nebo mezery atd.}}
- Výsledek
Parametr 1 není definován, nebo je definován, ale má hodnotu null. Obsahuje pouze prázdné řetězce nebo mezery atd.
Druhé použití ({{{1|}}}
, vzorek B) s aktuální prázdnou výchozí hodnotou je často požadovaným způsobem, jak zvládnout situace, kdy parametr existuje, ale je složen pouze z prázdného místa.
Testování a předávání nedefinovaných parametrů
Chcete-li odlišit možný prázdný parametr od nespecifikovaného, porovnejte jej sám se sebou pomocí {{#ifeq:}}
a různé výchozí hodnoty.
Nezáleží na tom, jaké jsou výchozí hodnoty, pokud se liší, takže se obvykle volí krátké.
Všechny následující fungují ekvivalentně:
{{#ifeq:{{{v|+}}}|{{{v|-}}}| v bylo definováno (a může být prázdné) | v nebylo definováno }}
{{#ifeq:{{{v|}}}|{{{v|-}}}| v bylo definováno (a může být prázdné) | v bylo definováno (a může být prázdné) }}
{{#ifeq:{{{v|}}}|{{{v}}}| v bylo definováno (a může být prázdné) | v nebylo definováno }}
Ve vzácných případech se šablona chová jinak, když parametr není specifikován, než když je zadán, ale je prázdný. Když tuto šablonu používá šablona obalu (která používá stejnou sadu pojmenovaných parametrů), jedním ze způsobů, jak zajistit, aby nedefinované parametry zůstaly nedefinované, je následující (technika funguje také s číslovanými parametry):
{{wrapped_template| normal_parameter={{{normal_parameter|}}}| sensitive_parameter{{#if:{{{sensitive_parameter|}}}||NULL}}={{{sensitive_parameter}}} }}
wrapped_template
obdrží definovaný normal_parameter ve všech případech. Když je normal_parameter definován, ale prázdný, a když není definován, wrapped_template
obdrží prázdný normal_parameter.
Naproti tomu wrapped_template
přijímá definovaný sensitive_parameter pouze, když je skutečně definován. Když sensitive_parameter není definován, #if
změní název parametru na sensitive_parameterNULL.
Aby to správně fungovalo, název parametru s příponou musí být pro wrapped_template
bezvýznamný.