Hilfe:Lua/Umgebung

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.siteBearbeiten

Scribunto (englisch)
Quellcode

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

mw.site.currentVersion
Aktuelle Version von MediaWiki: 1.37.0-wmf.9 (cdeef1c) – {{CURRENTVERSION}}
mw.site.scriptPath
Pfad zum Server-Skript: /w – {{SCRIPTPATH}}
mw.site.server
Domain des Servers: //de.wikipedia.org – {{SERVER}}
mw.site.siteName
Art des Servers: Wikipedia – {{SITENAME}}
mw.site.stylePath
Pfad zu den Server-Stilen: /w/skins – {{STYLEPATH}}
mw.site.namespaces
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 )
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
Statistische Angaben; alle Details vom Typ number.
table mit Elementen:
  • .pages
  • .articles
  • .files
  • .edits
  • .views
  • .users
  • .activeUsers
  • .admins
mw.site.stats.pagesInCategory( category, which )
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“.[1]
mw.site.stats.pagesInNamespace( nsn )
nsn ist die Nummer.
mw.site.stats.usersInGroup( group )
Anzahl der Benutzer in Gruppe group.

Namensraum-ElementBearbeiten

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:[2] NR≥0)
.isIncludable
true – wenn Seiten eingebunden werden können (vereinfacht:[2] NR≥0)
.isMovable
true – wenn Seiten verschoben werden können (vereinfacht:[2] NR≥0)
.isSubject
true – wenn es Inhaltsseiten, aber keine Diskussionsseiten sind (vereinfacht:[2] NR≥0 und gerade)
.isTalk
true – wenn es ein Diskussionsnamensraum ist (vereinfacht:[2] 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[2]).
.talk
Querverweis zum Element mit dem korrespondierenden Diskussionsnamensraum; sonst das Element selbst (nur Inhaltsnamensräume); nil, wenn keine Zuordnung definiert ist (NR<0[2]).
.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[2]).
  • Als associated page bezeichnet man ansonsten die Verknüpfung zwischen Benutzername oder IP mit einer Benutzerseite; das ist hier nicht gemeint.

mw.languageBearbeiten

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 )
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 )
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 codeName (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()
language-Objekt für Inhaltssprache des Projekts: de
mw.language.getFallbacksFor( code )
Ergibt sequence table, zumindest mit en als letztem Element.
Beispiel: "hsb"{ "dsb", "de", "en" }
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 )
Bilde ein neues language-Objekt für code.

language-ObjektBearbeiten

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

local lang = mw.language.new( code )

Anschließend sind verfügbar:

lang:getCode()
lang:isRTL()
lang:lc( s )
lang:lcfirst( s )
lang:uc( s )
lang:ucfirst( s )
lang:caseFold( s )
lang:formatNum( n )
lang:formatDate( format, timestamp, local )
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 (20201114225111)
    • ISO (2021-06-20T14:22:44+00:00)
  • local – lokale Projektzeit oder Weltzeit
    • nil, falseUTC (Vorgabe).
    • true – Lokale Wiki-Zeit
lang:formatDuration( seconds, allowedIntervals )
lang:getFallbackLanguages()
lang:parseFormattedNumber( s )
lang:convertPlural( n, forms )
lang:convertGrammar( word, case )
lang:grammar( case, word )
lang:gender( what, masculine, feminine, neutral )
lang:gender( what, options )
lang:getArrow( direction )
lang:getDir()
lang:getDirMark( opposite )
lang:getDirMarkEntity( opposite )
lang:getDurationIntervals( seconds, allowedIntervals )

mw.messageBearbeiten

Scribunto (englisch)
Quellcode

Systemnachrichten aus dem translatewiki: oder dem MediaWiki-Namensraum.

mw.message.new( key )
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-ObjektBearbeiten

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 )
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 )
Setzt Sprache über einen Sprachcode.
Gibt das message-Objekt selbst zurück.
msg:useDatabase( bool )

msg:title( title )
msg:parse()

Generiere eine Zeichenkette in HTML-Code aus dem Objekt.
Dies war kaum einmal sinnvoll, da #invoke Wikitext zurückgeben soll.
Diese Funktion ist „teuer“.[1]

msg:parseAsBlock()

Wie .parse(), jedoch eingeschlossen in ein Block-Level-Tag (<div>).
Diese Funktion ist „teuer“.[1]
msg:plain()
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.

osBearbeiten

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.

AnmerkungenBearbeiten

  1. a b c Sie wird dem expensiveCount hinzugezählt. Dieser ist auf 500 pro dargestellte Gesamt-Seite begrenzt.
  2. a b c d e f g h Gilt für übliche Inhalts-Wikis.