Zum Inhalt springen

Hilfe:Lua/mw

aus Wikipedia, der freien Enzyklopädie

{{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[Bearbeiten]

Einige Funktionen sind direkt als Komponenten angebunden, bei anderen ist die Komponente eine Bibliothek, die die einzelnen Funktionen enthält.

Unmittelbare Funktionen

Funktionssammlungen

mw.ext[Bearbeiten]

mw.ext.data[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 ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
  • s – Seitentitel in commons:Data:
    • Endet auf .tab (als frei gestaltete Tabelle)
  • slang – (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.

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.ext.templatestyles[Bearbeiten]

TemplateStyles in die Zielseite einbinden.

mw.ext.templatestyles.link( s ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
  • s – Seitenname; auf .css endend

mw.html[Bearbeiten]

→ Scribunto (englisch)
Quellcode

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 ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
  • 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)

html-Objekt[Bearbeiten]

<syntaxhighlight lang="lua"> local el = mw.html.create( "div" ) </syntaxhighlight> 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 ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Fügt einen Klassennamen zum Attribut class des Objekts hinzu.
  • access – Zeichenkette mit zusätzlichem Klassen-Bezeichner
el:allDone( ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
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 ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
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
  1. table – Tabelle mit Zuweisungen name→value
el:css( property, value ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
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
  1. table – Tabelle mit Zuweisungen property→value
el:cssText( string ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Füge formatierte Stildefinitionen zum Attribut style des Objekts hinzu.
  • string – Zeichenkette mit Definitionen
el:done( ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
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 ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Frage einen Attributwert ab.
  • attr – Zeichenkette mit dem Namen des Attributs
Der Rückgabewert ist der Attributwert; in der Regel eine Zeichenkette.
el:newline() Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Zeilenumbruch-Zeichen \n an die Definition anhängen.
el:node( builder ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
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 ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
An das aktuelle Objekt wird ein neu gebildetes html-Objekt angehängt.
Der Rückgabewert ist das neu gebildete html-Objekt.
el:wikitext( … ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Anhängen einer beliebigen Anzahl von Kind-Knoten.
  • ... – Aufzählung von Zeichenketten oder Zahlen (unbestimmte Argumentanzahl)

Beispiel für ein HTML-Element[Bearbeiten]

<syntaxhighlight lang="lua"> local div = mw.html.create( "div" ) div:attr( "id", "testdiv" )

  :css( "width", "100%" )
  :wikitext( "Some text" )
  :tag( "hr" )

return tostring( div ) </syntaxhighlight> soll liefern: <syntaxhighlight lang="html">

Some text

</syntaxhighlight>