Zum Inhalt springen

Hilfe:Lua/Umgebung

aus Wikipedia, der freien Enzyklopädie

{{Wikipedia:Lua/Linkbox}} Diese Hilfeseite stellt für Lua-Programmierer die Unterstützung in der momentanen Projekt-Umgebung durch Scribunto-Standardbibliotheken dar.

Es sind

  • mw.site – für allgemeine Informationen über das Wiki-Projekt
  • mw.language – für menschliche Sprachen, ihre Namen und Codes
  • mw.message – für Systemnachrichten
  • os – Lua-Bibliothek für Betriebssystem-Zugriffe

Siehe dazu auch Hilfe:Lua/Internationalisierung.

mw.site[Bearbeiten]

→ Scribunto (englisch)
Quellcode

Abfrage allgemeiner Informationen über das Wiki-Projekt und einige statistische Angaben.

mw.site.currentVersion Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Aktuelle Version von MediaWiki: 1.43.11 – {{CURRENTVERSION}}
mw.site.scriptPath
Pfad zum Server-Skript: – {{SCRIPTPATH}}
mw.site.server Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Domain des Servers: https://wiki.kertz.ch – {{SERVER}}
mw.site.siteName Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Art des Servers: Kertz Wiki – {{SITENAME}}
mw.site.wikiId Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Datenbankname des Wikis: dewiki
mw.site.stylePath
Pfad zu den Server-Stilen: /skins – {{STYLEPATH}}
mw.site.namespaces Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Angaben zu allen Namensräumen.
table mit einem Eintrag pro Namensraum. Jedes Element hat die unten beschriebenen Eigenschaften.
Der Zugriff kann über die Nummer oder irgendeinen Alias erfolgen.
  • mw.site.namespaces.module.name ist Modul
  • mw.site.namespaces[12].name ist Hilfe
  • mw.site.namespaces.wp.id ist 4
mw.site.contentNamespaces
table wie mw.site.namespaces, aber nur Inhaltsnamensräume.
mw.site.subjectNamespaces
table wie mw.site.namespaces, aber nur „Vorderseiten“.
mw.site.talkNamespaces
table wie mw.site.namespaces, aber nur Diskussionsnamensräume.
mw.site.interwikiMap( select ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Interwiki-Tabelle.
  • select == "!local" nur nicht-lokale Interwikis. Für die deutschsprachige Wikipedia sind „lokale“ Ziele alle anderen Wikipedien, nicht aber Wikisource.
mw.site.stats Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Statistische Angaben; alle Details vom Typ number.
table mit Elementen:
  • .pages
  • .articles
  • .files
  • .edits
  • .views
  • .users
  • .activeUsers
  • .admins
mw.site.stats.pagesInCategory( category, which ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Statistik der Kategorie mit dem Titel category.
Wenn optionales which fehlt, nil oder "*" ist, wird eine table mit den folgenden Elementen zurückgegeben; ansonsten das Schlüsselwort erwartet.
  • all – Gesamtzahl der Seiten, Dateien und Unterkategorien.
  • pages
  • files
  • subcats
Diese Funktion ist „teuer“.<ref name="expensive" />
mw.site.stats.pagesInNamespace( nsn ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
nsn ist die Nummer.
mw.site.stats.usersInGroup( group ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Anzahl der Benutzer in Gruppe group.

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden. Namensraum-Element[Bearbeiten]

Jedes Namensraum-Element hat folgende Eigenschaften:
.id
number – Nummer des Namensraums.
.name
string – Lokaler Name des Namensraums; etwa Benutzer.
.canonicalName
string – Kanonischer Name des Namensraums; etwa Project statt Wikipedia.
.displayName
string – Ersatz-Name für den Haupt-Namensraum, der meist leer wäre: (Artikel) oder (Seiten) oder (gallery)
nil – in jedem Namensraum, dessen Name nicht leer ist.
.hasSubpages
true – wenn Unterseiten für diesen Namensraum aktiviert sind.
.hasGenderDistinction
true – wenn dieser Namensraum unterschiedliche Aliasse für die Geschlechter hat (Benutzer und Benutzerin).
.isCapitalized
true – wenn der erste Buchstabe des Seitentitels immer groß geschrieben wird (abweichend im Wiktionary).
.isContent
true – wenn es ein Inhaltsnamensraum ist (vereinfacht:<ref name="simplified" /> NR≥0)
.isIncludable
true – wenn Seiten eingebunden werden können (vereinfacht:<ref name="simplified" /> NR≥0)
.isMovable
true – wenn Seiten verschoben werden können (vereinfacht:<ref name="simplified" /> NR≥0)
.isSubject
true – wenn es Inhaltsseiten, aber keine Diskussionsseiten sind (vereinfacht:<ref name="simplified" /> NR≥0 und gerade)
.isTalk
true – wenn es ein Diskussionsnamensraum ist (vereinfacht:<ref name="simplified" /> NR>0 und ungerade)
.defaultContentModel
string oder nil – Das content model für den Namensraum.
  • Meist wäre es ein string wie wikitext – im Modul-Namensraum jedoch Scribunto und bei einzelnen Seiten etwa css oder javascript.
.aliases
table mit einer sequence der Aliasse für den Namensraum.
.subject
Querverweis zum Element mit den „Vorderseiten“, wenn das Element einen Diskussionsnamensraum beschreibt; sonst das Element selbst, wenn Inhaltsnamensraum; nil, wenn keine Zuordnung definiert ist (NR<0<ref name="simplified" />).
.talk
Querverweis zum Element mit dem korrespondierenden Diskussionsnamensraum; sonst das Element selbst (nur Inhaltsnamensräume); nil, wenn keine Zuordnung definiert ist (NR<0<ref name="simplified" />).
.associated
Querverweis zum Element mit dem korrespondierenden Diskussionsnamensraum, wenn das Element „Vorderseiten“ beschreibt; zu den „Vorderseiten“, wenn das Element einen Diskussionsnamensraum beschreibt; nil, wenn keine Zuordnung definiert ist (NR<0<ref name="simplified" />).
  • Als associated page bezeichnet man ansonsten die Verknüpfung zwischen Benutzername oder IP mit einer Benutzerseite; das ist hier nicht gemeint.

mw.language[Bearbeiten]

→ Scribunto (englisch)
Quellcode

Schwerpunkt ist die Analyse der momentanen Projektsprache getContentLanguage() sowie von Wiki-Projekten unterstützter menschlicher Sprachen.

Mit mw.language.new() lässt sich ein neues language-Objekt bilden.

mw.language.fetchLanguageName( code, inLanguage ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Name der Sprache, die durch code beschrieben wird.
In der jeweils eigenen Sprache selbst („English“); bei optionalem Code inLanguage in dieser.
Ist keine Übersetzung in inLanguage definiert, wird die momentane Projektsprache benutzt, sonst Englisch, sonst die Sprache selbst.
Ist code unbekannt, dann ist der Rückgabewert code selbst.
mw.language.fetchLanguageNames( inLanguage, include ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Auflistung aller bekannten Sprachen
In der jeweiligen eigenen Sprache; bei optionalem Code inLanguage in dieser.
include (optional):
  • mw (Vorgabe) – nur wenn die Sprache definiert in MediaWiki oder wgExtraLanguageNames ist
  • all – alle bekannten Sprachen
  • mwfile – nur wenn die Sprache mw erfüllt und ein message file hat.
Ergibt table mit Zuweisungen code→Name (die Codes sind in Kleinbuchstaben notiert).
Ist für einzelne code keine Übersetzung definiert, wird analog zu fetchLanguageName() verfahren; ist inLanguage unbekannt, wird Englisch benutzt.
mw.language.getContentLanguage() Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
language-Objekt für Inhaltssprache des Projekts: de
mw.language.getFallbacksFor( code )
Ergibt sequence table, zumindest mit en als letztem Element.
Beispiel: "hsb" → <syntaxhighlight lang="lua" style="white-space: nowrap" inline>{ "dsb", "de", "en" }</syntaxhighlight>
mw.language.isKnownLanguageTag( code )
true – wenn code MediaWiki als IETF-Code bekannt ist.
mw.language.isSupportedLanguage( code )
true – wenn für code in MediaWiki eine Lokalisierung vorhanden ist.
mw.language.isValidBuiltInCode( code )
true – wenn code formal geeignet wäre, eine interne Sonder-Lokalisierung zu definieren. Dabei muss code zu keiner bekannten Sprache gehören.
mw.language.isValidCode( code )
true – wenn code formal korrekt ist; unabhängig davon, ob dies existiert. Dabei muss code zu keiner bekannten Sprache gehören.
mw.language.new( code ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Bilde ein neues language-Objekt für code.

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden. language-Objekt[Bearbeiten]

Ein neues Objekt für eine Sprache code lässt sich bilden mit

local lang = mw.language.new( code )
  • tostring( lang ) ergibt lang.code

Anschließend sind verfügbar:

lang.code
de
lang:getCode()
lang:isRTL()
lang:lc( s )
lang:lcfirst( s )
lang:uc( s )
lang:ucfirst( s )
lang:caseFold( s )
lang:formatNum( n ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
lang:parseFormattedNumber( s ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
lang:formatDate( format, timestamp, local ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Kennt alle Formatierungsdetails; formatiert gemäß der bei Konstruktion von lang gültigen Sprache.
  • format – gemäß Parser-Funktion #time
  • timestamp – darzustellender Zeitpunkt
    • jetzt (Vorgabe)
    • 14-stellig (20260313144849)
    • ISO (2026-11-01T18:57:39+00:00)
  • local – lokale Projektzeit oder Weltzeit
    • nil, false – UTC (Vorgabe).
    • true – Lokale Wiki-Zeit
lang:formatDuration( seconds, allowedIntervals )
lang:getDurationIntervals( seconds, allowedIntervals )
lang:getFallbackLanguages()
lang:plural( n, singular, plural )
lang:convertPlural( n, forms ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
lang:grammar( case, word )
lang:convertGrammar( word, case )
lang:gender( what, masculine, feminine, neutral ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
lang:gender( what, options )
lang:getArrow( direction )
Pfeil →
direction:
  • "forwards" ergibt → bzw. ← (Vorgabe)
  • "backwards" ergibt ← bzw. →
  • "left" ergibt ←
  • "right" ergibt →
  • "up" rgibt ↑
  • "down" rgibt ↓
lang:getDir()
ltr
sonst rtl
lang:getDirMark( opposite )
U+8206
sonst U+8207
lang:getDirMarkEntity( opposite )
&lrm;
sonst &rlm; bzw. durch lang:getDirMarkEntity( true )
lang:toBcp47Code()

mw.message[Bearbeiten]

→ Scribunto (englisch)
Quellcode

Systemnachrichten aus dem translatewiki: oder dem MediaWiki-Namensraum.

mw.message.new( key ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Schaffe ein neues message-Objekt.
  • key ist der Bezeichner der Systemnachricht.
mw.message.newFallbackSequence( key, keyFallback1, keyFallback2, … )
Wie mw.message.new( key ), aber mit Ersatzlösungen. Die erste existierende Nachricht wird verwendet.
mw.message.newRawMessage( s, params, … )
Schaffe ein neues, aber leeres message-Objekt basierend auf der Zeichenkette s statt einer Systemnachricht.
Die optionalen params werden an msg.params() weitergegeben.
mw.message.rawParam( value )
mw.message.numParam( value )
mw.message.getDefaultLanguage()
language-Objekt für die Standard-Sprache.
Im normalen Wiki identisch mit mw.language.getContentLanguage().

Einige Funktionen wurden im Februar 2014 entfernt (gerrit:110983).

message-Objekt[Bearbeiten]

Ein neues Objekt für eine Systemnachricht lässt sich bilden mit den verschiedenen

local msg = mw.message.new( key )

Ein Teil der Methoden gibt das message-Objekt selbst zurück, um das Verketten der Aufrufe zu ermöglichen.

msg:params( params ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Weist Parameterwerte zu.
params kann eine sequence table sein, oder es ist die Liste einzelner string-Argumente.
Gibt das message-Objekt selbst zurück.
msg:rawParams( params )
Gibt das message-Objekt selbst zurück.
msg:numParams( params )
Gibt das message-Objekt selbst zurück.
msg:inLanguage( lang ) Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Setzt Sprache über einen Sprachcode.
Gibt das message-Objekt selbst zurück.
msg:useDatabase( bool )

msg:title( title )
msg:parse() Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.

Generiere eine Zeichenkette in HTML-Code aus dem Objekt.
Dies war kaum einmal sinnvoll, da #invoke Wikitext zurückgeben soll.
Diese Funktion ist „teuer“.<ref name="expensive" />

msg:parseAsBlock()

Wie .parse(), jedoch eingeschlossen in ein Block-Level-Tag (<div>).
Diese Funktion ist „teuer“.<ref name="expensive" />
msg:plain() Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.
Wertet die Systemnachricht aus; nach Einbettung aller Parameter.
Gibt string zurück.

msg:text()
msg:escaped()

msg:exists()
true oder false je nach Existenz der Systemnachricht.
msg:isBlank()
true wenn der Bezeichner der Systemnachricht nicht existiert oder ihr Inhalt leer ist; sonst false.
msg:isDisabled()
true wenn der Bezeichner der Systemnachricht nicht existiert oder ihr Inhalt leer ist oder die Zeichenkette "-"; sonst false.

os[Bearbeiten]

→ Scribunto (englisch)

Eine Standardbibliothek in Lua ist os (operating system). Damit würden Zugriffe auf das Betriebssystem möglich. Auf den Wiki-Servern ist dies weitgehend unterbunden. Zu produktiven Zwecken ist das auch kaum sinnvoll praktisch nutzbar.

Die einzige Funktion, die bei der Entwicklung Anhaltspunkte liefern kann, ist os.clock(). Damit lassen sich Abschätzungen über den Zeitbedarf des Moduls treffen; siehe Lua #Begrenzungen.

Die Umrechnung in Sekunden (wohl seit 1. Januar 1970 00:00) ist für eine Wiki-Seite eher seltener von Interesse.

os.clock()
Ungefähre Anzahl der CPU-Sekunden, die das Programm verbrauchte.
Dargestellte Genauigkeit/Diskretisierung: 10−9 Sekunden.
os.date( format, time )
Datum und Uhrzeit.
Besser über lang:formatDate() zu erreichen und ortsüblich zu formatieren.
os.difftime( t2, t1 )
Anzahl der Sekunden von t1 bis t2.
os.time( table )
Uhrzeit auf dem Server als number in Sekunden.
Bei optionaler table diese auswerten.

Anmerkungen[Bearbeiten]

<references> <ref name="expensive"> Sie wird dem expensiveCount hinzugezählt. Dieser ist auf 500 pro dargestellte Gesamt-Seite begrenzt. </ref> <ref name="simplified"> Gilt für übliche Inhalts-Wikis. </ref> </references>