Hilfe:Lua/mw

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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

Funktionssammlungen

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: mw:Help:Tabular Data, auch mw:Help:Map Data
mw.ext.data.get( s, lang )
  • s – Seitentitel in commons:Data:
    • Endet auf .tab
  • 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.

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.

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( 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)

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 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
  1. table – Tabelle mit Zuweisungen namevalue
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
  1. table – Tabelle mit Zuweisungen propertyvalue
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.
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>