Diese Projektseite stellt Möglichkeiten dar, bei der Programmierung von Lua-Modulen das Basis-Konzept einer Trennung von Programm und Daten umzusetzen.

Allgemeines

[Bearbeiten | Quelltext bearbeiten]

Die Trennung von Programm und Daten gehört zum Stoff des ersten Semesters eines Informatikstudiums.

Vorteile:

Grundsätzlich werden Parameter mit konstanten Werten, welche eine zukünftig möglicherweise veränderliche Konfiguration abbilden, sowie sämtliche veränderlichen Textbausteine, die auch von menschlichen Sprachen abhängen, in der Strukturierung getrennt von den prozeduralen, algorithmischen Beziehungen.

Techniken in Lua und Wikis

[Bearbeiten | Quelltext bearbeiten]

Systembibliotheken

[Bearbeiten | Quelltext bearbeiten]

Die Funktionen der Systembibliotheken liefern diverse global gepflegte Konfigurationsdaten über das aktuelle Wiki.

Lokale Variablen

[Bearbeiten | Quelltext bearbeiten]

Im aktuellen Modul können Werte statisch zugewiesen werden, oder auch abhängig von der aktuellen Seite dynamisch ermittelt werden.

Beispiel: Modul:TemplateData

mw.loadData()

[Bearbeiten | Quelltext bearbeiten]

Dies ist Mittel der Wahl für eine Programmierung, die in mehreren Wikis wiederverwendet werden soll.

Vorteile

Nachteile

Beispiel: Modul:URIutil/urn

Unter-Modul

[Bearbeiten | Quelltext bearbeiten]

Mittels require() kann ein anderes Modul eingebunden werden.

Vorteile

Nachteile

Beispiel: Modul:Vorlage:Runeberg/NF‎

JSON

[Bearbeiten | Quelltext bearbeiten]

Seit Oktober 2022 ist die Bibliotheksfunktion mw.loadJsonData() nutzbar.

Benutzung: tbl = mw.loadJsonData( seitenname )

Vorteile

Nachteile

Beispiel: Modul:JSTOR/config.json

Vorlagen

[Bearbeiten | Quelltext bearbeiten]

Eine beliebige Seite in Wikitext kann ausgelesen, insbesondere aber transkludiert werden.

Vorteile

Nachteile

Beispiel: Vorlage:Seitenbewertung/Darstellung eingebunden durch Modul:Vorlage:Seitenbewertung

Systemnachrichten

[Bearbeiten | Quelltext bearbeiten]

Vorteile

Nachteile

Commons:Data:

[Bearbeiten | Quelltext bearbeiten]

Im Namensraum Data:*.tab auf Wikimedia Commons können Seiten im JSON-Format hinterlegt werden, die alle Wikis lokal einbinden und auslesen können.

Vorteile

Nachteile

Eine globale Zusammenstellung kann einmalig in mw.loadData() importiert und dort unter lokalen Bedingungen aufbereitet, gefiltert und einmalig vorverarbeitet werden.

Beispiel: commons:Data:ISO15924/rtl.tab

Wikidata

[Bearbeiten | Quelltext bearbeiten]

Aus Wikidata können beliebige Eigenschaften eines Items (oder auch anderer Objekte) ausgelesen werden; siehe mw:Extension:Wikibase Client/Lua.

Vorteile

Nachteile

Weitere Informationen

[Bearbeiten | Quelltext bearbeiten]