Nápověda:Funkce analyzátoru v šablonách

From mediawiki.org
This page is a translated version of the page Help:Parser functions in templates and the translation is 100% complete.
PD 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. PD

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.

Testování parametrů s výchozími hodnotami a bez nich
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ý.

Související odkazy