Nápověda:Moduly
Author
Albert FloresModuly jsou speciální šablony používající místo wikikódu programovací jazyk Lua. Poskytují tak oproti běžným šablonám základní programovací strukturované příkazy, ale také mnoho přidaných a pokročilých funkcí z MediaWiki rozšíření Scribunto.
Volání modulu
Jak psaní modulů, tak volání modulů je pokročilejší oproti běžným šablonám. Moduly jsou psány s ohledem na interwiki využití, jsou tedy převážně v angličtině. +more Zároveň běžně zajišťují mnoho funkcí najednou, stránka jednoho modulu dokáže to, co desítky různých šablon. Z toho důvodu se moduly používají pouze uvnitř šablon a pokročilých stránek wiki, nikdy ne přímo ve článcích.
Modul se do šablony vloží pomocí kouzelné funkce . Volání modulu pak vypadá takto: . +more Stejně jako u šablon se vyplní název modulu a parametry (pojmenované i nepojmenované). Navíc proti šablonám je tu ještě název funkce. Tam je potřeba vyplnit, která z funkcí v modulu se zavolá. Alternativní zápis šablony opakovat zobrazující tři vykřičníky (. ) pomocí funkce rep modulu String by tedy vypadal takto:.
Protože se opakování nějakého textu může hodit i při psaní článků, máme zde kromě modulu i šablonu. Pro její kratší a srozumitelnější zápis je docela dobré používat všude právě šablonu. +more Jsou ale funkce modulů, které přímo ve článcích běžně nevyužijeme, například funkce modulu Wikidata. Protože tyto funkce mimo šablony nemají smysl, není potřeba pro ně vytvářet ještě šablonu.
Psaní modulu
Vytvoření modulu je také složitější než vytvoření šablony. Pro začátek je potřeba mít nějaké základy programování a naučit se orientovat se v jazyce Lua. +more Také není na škodu mít přehled ve speciálních funkcích rozšíření Scribunto.
K přípravě modulu lze využít pískoviště Modul:Test, společně s dalšími pískovišti (Šablona:Test, Wikipedie:Pískoviště, . ), viz nápověda. +more Kromě toho může mít každý modul jako u šablon i vlastní pískoviště na své podstránce a navíc může mít i tzv. testovací podmodul na podstránce /testcases. Zde jsou umístěny testovací funkce využívající jeden z modulů ScribuntoUnit nebo UnitTests a vypisující výsledek testu při zavolání (běžně volané ve svojí diskusní stránce). Oproti šablonám tak lze moduly důkladně otestovat, aniž by bylo potřeba modul někde na pískovišti použít.
Základem modulu je takzvaná tabulka funkcí (f), . Ta obsahuje všechny funkce modulu. +more Každá funkce poté vezme tzv. kontext obsahující různé užitečné informace (parametry nadšablony, parametry modulu, jméno aktuální stránky, jméno modulu, atd. ), zpracuje jej podle sebe a vrátí výsledek, který se vypíše. Jednoduchý modul tak vypadá např. takto:.
local f = {}
function f.prvniParametr(kontext) return kontext.args[1] end
return f
Funkce prvniParametr v tomto případě vrátí (vypíše) první parametr. Volání tedy zobrazí „text k vypsání“.