Zeile 2: |
Zeile 2: |
| {{Benutzer:Stewie/Navigation Wiki}} | | {{Benutzer:Stewie/Navigation Wiki}} |
| | | |
− | Lua Module funktionieren nahezu wie Vorlagen, sind bei komplexen anliegen aber schneller und lesbarer als Wikicode.
| |
− |
| |
− | Wichtige Ressourcen:
| |
− |
| |
− | '''Einsatz:'''
| |
− | Scribunto-Lua-Skripte werden in dem Namensraum Module abgelegt. Module laufen auf Wiki-Seiten unter Verwendung der #invoke Parser-Funktionen. Jedes Modul hat eine Sammlung an Funktionen, die mittels Wiki-Syntax aufgerufen werden können, wie:
| |
− |
| |
− | <pre>
| |
− | {{#invoke: Module_name | function_name | arg1 | arg2 | arg3 ... }}
| |
− | </pre>
| |
− |
| |
− | Einfaches Beispiel, das Modul "LuaTest" mit der Funktion "hello", es erzeugt als ausgabe (return) "Hello, world!"
| |
− |
| |
− | <pre>
| |
− | local p = {}
| |
− |
| |
− | function p.hello( frame )
| |
− | return "Hello, world!"
| |
− | end
| |
− |
| |
− | return p
| |
− | </pre>
| |
− |
| |
− | Einbindung in eine Wikiseite
| |
− | <pre>
| |
− | {{#invoke:LuaTest|hello}}
| |
− | </pre>
| |
− |
| |
− | '''Ergebnis:'''
| |
− | {{#invoke:LuaTest|hello}}
| |
− |
| |
− | '''Beispiel mit Argumenten:'''
| |
− |
| |
− | Lua Funktionen können beliebige Parameter übergeben bekommen, hier frame.args[1]
| |
− |
| |
− | Angepasstes Lua Modul
| |
− | <pre>
| |
− |
| |
− | local p = {} --local p = {} -- p steht für Paket (engl. package)
| |
− |
| |
− | function p.hello( frame )
| |
− | return frame.args[1]
| |
− | end
| |
− |
| |
− | return p
| |
− |
| |
− | </pre>
| |
− |
| |
− | <pre>
| |
− | {{#invoke:LuaTest_Argumente|hello|Ein Toller Text}}
| |
− | </pre>
| |
− | '''Ergebnis:'''
| |
− | {{#invoke:LuaTest_Argumente|hello|Ein Toller Text}}
| |
− |
| |
− | '''Beispiel Semantische Angaben verarbeiten:'''
| |
− | Semantische Abfragen können innerhalb von Lua Scripten Erfolgen, die abfragen können dann entsprechend weiterverarbeitet werden.
| |
− | Die Rückgabe der Abfrage erfolgt dabei als "Array", die weiterverarbeitung ist etwas gewöhnungsbedürftig
| |
− |
| |
− | Beispielweise sollen alle offiziellen Publikationen abgefragt werden, uns interessieren dabei die Autor:innen
| |
− | <pre>
| |
− | local queryResult = mw.smw.ask('[[Hauptkategorie::Publikation]][[Kanon::offiziell]]|?Autoren#-=2|mainlabel=-|limit=500')
| |
− | </pre>
| |
| | | |
| | | |