Hilfe:Lua/mw
{{Wikipedia:Lua/Linkbox}} Diese Seite stellt für Lua-Programmierer das mw-Objekt dar.
Das Objekt mw
(für MediaWiki) ist immer verfügbar. Es stellt zahlreiche nützliche Funktionen bereit.
Die Komponenten sind analog der Funktionen und Datenstrukturen auf dem Wiki-Server (in PHP) sowie dem Objekt mw
in JavaScript gebildet, wo sich gleiche Aufgaben finden. Sofern möglich, stimmen Namen und Parameter überein.
Alle Komponenten
Einige Funktionen sind direkt als Komponenten angebunden, bei anderen ist die Komponente eine Bibliothek, die die einzelnen Funktionen enthält.
Unmittelbare Funktionen
mw.addWarning()
mw.allToString()
mw.clone()
mw.dumpObject()
mw.getCurrentFrame()
mw.incrementExpensiveFunctionCount()
mw.isSubsting()
mw.loadData()
mw.log()
mw.logObject()
Funktionssammlungen
mw.ext
– Erweiterungenmw.html
– HTML-Elementmw.language
– Formatieren in der aktuellen menschlichen Sprachemw.message
– Systemnachrichtenmw.site
– aktuelles Wiki-Projektmw.text
– Zeichenkettenmw.title
– Wiki-Seitenmw.uri
– URLmw.ustring
– Zeichenketten in Unicodemw.wikibase
→ mw:Extension:Wikibase Client/Lua, oder md_docs_topics_lua
mw.ext
mw.ext.data
Komplexe Daten aus zentraler Struktur auslesen.
- Werden für alle Wikis auf Commons im Namensraum
Data:
bereitgestellt. - Im Gegensatz zu den Daten in Form eines Semantic Web / Graphen auf Wikidata können hiermit tabellarische Daten und Kartendaten abgelegt werden.
- Jedes Datenobjekt trägt eine Lizenzerklärung.
- Der Quelltext ist in JSON notiert.
- Mehr: mw:Help:Tabular Data, auch mw:Help:Map Data
- mw.ext.data.get( s, lang )
-
s
– Seitentitel incommons:Data:
- Endet auf
.tab
- Endet auf
lang
– (optional) Sprachcode- Vorgabe: eigene Projektsprache
"_"
– Rohdaten- Lizenzinformationen werden sprachlich konvertiert.
- Gibt table zurück, sonst
nil
.- table
.data
sind die lokalisierten Nutzdaten. - Vermutlich mit schreibschützender metatable.
- table
Für Module die in mehreren Sprachversionen vorliegen eignet sich diese Funktion um die Übersetzungen zentral an einem Ort in einer als Übersetzungswörterbuch dienenden Tabelle zu hinterlegen (vgl. commons:Data:I18n/Module:TNT.tab) und auszulesen. Änderungen an Übersetzungen oder Erweiterung um neue Sprachen benötigt dann keine Änderung des Moduls mehr.
mw.html
Diese Methoden sind gut geeignet zur Synthese von HTML-Elementen.
Die Methodik ähnelt derjenigen, die in jQuery verwendet wird.
Ein neues html-Objekt lässt sich bilden mit
- mw.html.create( name, args )
-
- name – Name des gewünschten Elements; etwa
div
.- name kann auch eine leere Zeichenkette sein; dann wird ein leeres Objekt zurückgegeben.
- args – optionale table mit folgenden Feldern:
args.selfClosing
– Erzwingen eines unary Tag, auch wenn das für dieses Element nicht zu erwarten ist.args.parent
– Verweis auf ein möglicherweise bekanntes Eltern-html-Objekt (nur für interne Zwecke vorgesehen)
- name – Name des gewünschten Elements; etwa
html-Objekt
local el = mw.html.create( "div" )
Auf ein so gebildetes html-Objekt el
können die folgenden Methoden angewendet werden.
Rückgabewert ist in der Regel das ursprüngliche Objekt selbst, weshalb die Methoden verkettet werden können.
- el:addClass( access )
- Fügt einen Klassennamen zum Attribut
class
des Objekts hinzu.- access – Zeichenkette mit zusätzlichem Klassen-Bezeichner
- el:allDone( )
- Ermittelt den obersten Elternknoten, unter den dieses html-Objekt eingefügt ist.
- Wie
html:done()
, aber versucht jeweils noch zum nächsthöheren Elternknoten zu gelangen. - el:attr( name, value )
- el:attr( table )
- HTML-Attribut zuweisen.
- name – Zeichenkette mit dem Namen des Attributs (Zahl ist formal zugelassen, wäre aber ungültiges HTML)
- value – Zeichenkette oder Zahl mit dem Wert des Attributs
- table – Tabelle mit Zuweisungen name→value
- el:css( property, value )
- el:css( table )
- Fügt eine oder mehrere Stildefinitionen zum Attribut
style
des Objekts hinzu.- property – Zeichenkette mit dem Namen der Eigenschaft
- value – Zeichenkette oder Zahl mit dem Wert der Eigenschaft
- table – Tabelle mit Zuweisungen property→value
- el:cssText( string )
- Füge formatierte Stildefinitionen zum Attribut
style
des Objekts hinzu.- string – Zeichenkette mit Definitionen
- el:done( )
- Ermittelt den unmittelbaren Elternknoten, unter den dieses html-Objekt eingefügt ist.
- Wenn kein Elternknoten vorhanden ist, wird dieses html-Objekt selbst zurückgegeben.
- Wie bei
jQuery().end()
wird damit ermöglicht, mehrere verkettete Kind-Elemente gleichzeitig in einer einzigen Anweisung zu definieren. Ob die Einzel-Anweisung dann noch besonders übersichtlich und nachvollziehbar ist, steht dahin. - el:getAttr( attr )
- Frage einen Attributwert ab.
- attr – Zeichenkette mit dem Namen des Attributs
- Der Rückgabewert ist der Attributwert; in der Regel eine Zeichenkette.
- el:newline()
- Zeilenumbruch-Zeichen
\n
an die Definition anhängen. - el:node( builder )
- Kind-Knoten an das Objekt anbinden.
- builder – Zeichenkette oder anderes html-Objekt
- Voraussetzung: Es darf sich beim aktuellen Objekt nicht um ein zwingendes unary Element handeln.
- el:tag( art, args )
- An das aktuelle Objekt wird ein neu gebildetes html-Objekt angehängt.
- Die Parameter entsprechen denen von mw.html.create().
- Der Rückgabewert ist das neu gebildete html-Objekt.
- el:wikitext( … )
- Anhängen einer beliebigen Anzahl von Kind-Knoten.
...
– Aufzählung von Zeichenketten oder Zahlen (unbestimmte Argumentanzahl)
Beispiel für ein HTML-Element
local div = mw.html.create( "div" )
div:attr( "id", "testdiv" )
:css( "width", "100%" )
:wikitext( "Some text" )
:tag( "hr" )
return tostring( div )
soll liefern:
<div id="testdiv" style="width:100%;">Some text<hr /></div>