Änderungen

keine Bearbeitungszusammenfassung
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>