Hilfe:Lua/mw
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
[Bearbeiten | Quelltext bearbeiten]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.loadJsonData()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
mw.ext
[Bearbeiten | Quelltext bearbeiten]mw.ext.data
[Bearbeiten | Quelltext bearbeiten]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: Hilfe:Wikimedia Commons/Data
- mw.ext.data.get( s, slang )
-
s– Seitentitel incommons:Data:- Endet auf
.tab(als frei gestaltete Tabelle)
- Endet auf
slang– (optional) Sprachcode- Vorgabe: eigene Projektsprache
"_"– Rohdaten- Lizenzinformationen werden sprachlich konvertiert.
- Gibt table zurück, sonst
nil.- table
.datasind 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
[Bearbeiten | Quelltext bearbeiten]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( art, args )
-
- art – Name des gewünschten Elements; etwa
div.- art 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)
- art – Name des gewünschten Elements; etwa
html-Objekt
[Bearbeiten | Quelltext bearbeiten]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
classdes 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
styledes 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
styledes 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
\nan 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
[Bearbeiten | Quelltext bearbeiten]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>