Šablona:Chyba
Chyba! …ukázka funkce šablony.
Účel
Tato šablona slouží pro označení povinných parametrů volaných šablon a pro validaci vstupních hodnot.
Účelem šablony je:
- ošetření chyb při volání šablon,
- určení jejich důvodu a
- určení jejich původu, pro umožnění snadného nalezení místa jejich projevu ve výsledném článku.
Pro dosažení těchto účelů působí šablona tyto účinky:
- kategorizace stránky do chybové kategorie a
- označení místa chyby
Použití
V textu chybového hlášení se mají objevit tyto informace:
- odkaz na šablonu, která chybová hlášení generuje, ideálně pomocí
{{Šablona|Chybu generující šablona}}
- popis chyby,
- především tedy přímo název chybějícho parametru:
hodnota parametru "NutnýVstup" chybí, ačkoli je požadována!
- nebo s ukázkou hodnoty mimo rozsah:
hodnota "{{{NutnýVstup}}}" parametru "NutnýVstup" nebyla rozpoznána!
- především tedy přímo název chybějícho parametru:
Při editaci šablon a jejich rozšiřování o chybová hlášení se ujistěte, že nevzniknou žádná nechtěná odřádkování.
Šablona používající chybu by také neměla do chybové kategorie kategorizovat sama sebe. Abyste se vyhnuli této nechtěné kategorizaci sama sebe, můžete použít následující volání: <includeonly>{{Chyba| ... }}</includeonly>
.
Příklady možných hlášení
Vůbec nezadáno
{{Chyba|Šablona {{Šablona|Chybu generující šablona}} požaduje pro parametr "NutnýVstup" zadat nějakou hodnotu!}}
Šablona {{Chybu generující šablona}}
požaduje pro parametr "NutnýVstup" zadat nějakou hodnotu!
Zadáno mimo definiční rozsah
{{Chyba|Šablona {{Šablona|Chybu generující šablona}} hodnotu "{{{1}}}" zadanou do parametru "NutnýVstup" nerozeznala!}}
Šablona {{Chybu generující šablona}}
hodnotu "{{{1}}}" zadanou do parametru "NutnýVstup" nerozeznala!
Účinky
Zařazení do kategorie
Šablonou je typicky plněna kategorie:Údržba:Chybná volání šablon či jiné kategorie podle jmenného prostoru, kde došlo k chybě anebo určené volající šablonou hlásící chybu.
Skrytý popis chyby
Kromě chybových hlášení, které může být v různých článcích různé, podle textu zadaného při volání, lze chybové hlášení stále dohledat i ve výsledném HTML kódu článku: Popis chyby je jen pomocí CSS vlastnosti display: none;
sice vyloučen ze zobrazování, ovšem text zadaný do šablony {{chyba}}
bude v kódu přítomen.
Ovšem jakmile se tento schovávací mechanismus použije a skutečně dojde na prohledávání HTML, samotné hlášení "Chyba!" stále nijak nepomůže k rozpoznání problému! Je na zodpovědnosti wikipedisty, autora šablony, který skrývá chybová hlášení, aby do textu zahrnul i odkaz na šablonu, ve které chyba nastala!
- Použijte text, jako by se měl čtenářům ukázovat, aby objasňoval potíž.
- Do textu zahrňte i odkaz na šablonu samotnou.
Příklad:
{{chyba|Šablona {{Šablona|Dohledatelná}} selhala, i když má všechny parametry, protože to tak zrovna chci!}}
Vygenerovaný výsledek:
Šablona {{Dohledatelná}}
selhala, i když má všechny parametry, protože to tak zrovna chci!
Stylování chyby ve zdrojovém kódu stránky
Chybová hlášení jsou stylována podle této definice CSS třídy, konkrétně ze souboru /common/shared.css
:
.error { color: red; font-size: larger; }
Příklady použití
Kód | Výsledek | CSS styl |
---|---|---|
{{Chyba}}
|
Chyba! | |
{{Chyba|}}
|
Chyba! | |
{{Chyba|popis chyby}}
|
popis chyby | |
{{Chyba|popis chyby|kategorie=Jiná cílová kategorie}}
|
popis chyby | |
{{Chyba|popis chyby|skrytý=skrytý}}
|
display: none;
| |
{{Chyba|popis chyby|skrytý=}}
|
display: none;
|
Parametry
Šablonu lze zavolat i bez parametrů: Implicitní hlášení pak je Chyba!.
{{{1}}}
- nepojmenovaný volitelný (ale doporučený) parametr (první): Hodnotou je hlášení o chybě, text ke zobrazení.skrytý
- volitelný parametr, text popisu chyby bude skryt, ale stále obsažen v HTML kódu výsledného článku (hledejtetitle="Chyba v použití šablony!" class="error"
). Je-li tento parametr použit, žádné hlášení se čtenáři nezobrazí: Takové chování je vhodné například pro ošetření zastaralých parametrů používaných šablon, aby se všechna volání s takovými parametry mohla postupně opravit/nahradit. Na hodnotě parametru nezáleží, nepoužívá se, stačí i jen jeho přítomnost.kategorie
- volitelný parametr, cílová kategorie, do které se má článek s chybou zařadit.
Skrytý popis
V situacích, kdy sice je cílem varovat o chybném použití šablony, ovšem bez nevzhledného porušení obsahu příliš dlouhým hlášením, lze použít vnořené skryté hálšení:
abc{{Chyba|Chybný vstup!{{Chyba|skrytý=skrytý|Šablona {{Šablona|Chybu generující šablona}} hodnotu "{{{1}}}"<!--
-->zadanou do parametru "NutnýVstup" nerozeznala!}}}}xyz
abcChybný vstup!xyz
Z příkladu je vidět, že se čtenáři v článcích zobrazí pouze minimalistická verze popisu chyby. Naproti tomu wikipedisté vědí, že takové články jsou kategorizovány a že i v samotném článku, v jeho zdrojovém HTML kódu, je podrobný popis chyby uveden a k dohledání.
Předané chyby lze takto detekovat ikdyž jsou generovány skrytě, parametrem "skrytý".
Použití chyb
Kromě použití této šablony jako nápovědy při volání šablon a jako nástroje pro kategorizaci a následnou údržby Wikipedie lze chyby také detekovat v šablonách a reagovat na ně. Klíčová je zde CSS třída class="error"
: Na tu totiž reaguje interní funkce {{#iferror:
, šablona tedy má možnost detekovat chybu předanou z jiné šablony a reagovat na ní.[1] Na základě detekované chyby lze větvit další činnost: Buď vygenerovat vlastní chybu, anebo tuto předanou naopak ošetřit. Takové vnitřně detekované chyby jsou pak pouze dočasné hodnoty během zpracovávání šablony, do výsledku a do samotného článku se vůbec nemusí zahrnout: Záleží jen na wikipedistovi a jeho šabloně.
Kód | Výsledek |
---|---|
{{#iferror: {{#expr: a+1}} | error | O.K. }}
|
error |
{{#iferror: {{Šablona|Vnitřně Volaná Šablona Možná Generující I Chybová Hlášení}} | error | O.K. }}
|
O.K. |
{{#iferror: {{Chyba|chyba dovnitř}} | error | O.K. }}
|
error |
{{#iferror: <span class="error">a</span> | error | O.K. }}
|
error |
{{#iferror: <span class="error">chyba dovnitř</span> | {{chyba|chyba ven}} | O.K. }}
|
chyba ven |
Pomocí takového mechanismu se lze přiblížit ExceptionHandlingu jako má třeba objektové programování: Pak lze chybová hlášení používat na způsob třetí hodnoty tříhodnotové logiky, vedla klasických "ano" a "ne".
Praktické použití tříhodnotové logiky
Prostý příklad testování chyby předané z vnořené šablony: Nejdříve volána pro test chyby, pak znovu už pro hodnotu samotnou.
{{#iferror: {{IsInt|{{{num|}}}}} | {{chyba|Hodnota "num" není číslo!}} | {{IsInt|{{{num|}}}}} }}
Komplexnější možné (už programátorsky překomplikované) testování chyby z volané vnořené šablony, navíc i s původním chybovým hlášením:
{{#iferror: {{IsInt|{{{num|}}}}} | {{chyba|Šablona {{Šablona|Tento příklad}} detekovala, že hodnota v parametru "num" není číslo! {{chyba|skrytý=skrytý|{{IsInt|{{{num|}}}}} }} }} | {{IsInt|{{{num|}}}}} }}
Odkazy
Reference
- ↑ (anglicky)iferror, Help:Extension:ParserFunctions, Wiki Help na commons, mediawiki.org
Související šablony
{{smazat}}