Zkratka:
  • WP:LUA

Moduly 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

editovat

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ě. 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 {{#invoke:}}. Volání modulu pak vypadá takto: {{#invoke: název modulu | název funkce v modulu | parametry }}. 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:

{{#invoke: string | rep | ! | 3 }}
{{opakovat| 3 | ! }}

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. 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

editovat

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. 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. 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), angl. package (p). Ta obsahuje všechny funkce modulu. 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í {{#invoke:můjModul|prvniParametr|text k vypsání}} tedy zobrazí „text k vypsání“.

Podrobnější nápovědu naleznete na stránce Nápověda:Vytvoření modulu.

Související články

editovat
  NODES