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-Projektmw.language
– für menschliche Sprachen, ihre Namen und Codesmw.message
– für Systemnachrichtenos
– Lua-Bibliothek für Betriebssystem-Zugriffe
Siehe dazu auch Hilfe:Lua/Internationalisierung.
mw.site
[Bearbeiten | Quelltext bearbeiten]Abfrage allgemeiner Informationen über das Wiki-Projekt und einige statistische Angaben.
- mw.site.currentVersion
- Aktuelle Version von MediaWiki:
1.44.0-wmf.2 (8fd6c9c)
– {{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
istModul
mw.site.namespaces[12].name
istHilfe
mw.site.namespaces.wp.id
ist4
- 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-Element
[Bearbeiten | Quelltext 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
stattWikipedia
. - .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
undBenutzerin
).- .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 jedochScribunto
und bei einzelnen Seiten etwacss
oderjavascript
.
- Meist wäre es ein string wie
- .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.language
[Bearbeiten | Quelltext bearbeiten]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 oderwgExtraLanguageNames
istall
– alle bekannten Sprachenmwfile
– nur wenn die Sprachemw
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()
- 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-Objekt
[Bearbeiten | Quelltext bearbeiten]Ein neues Objekt für eine Sprache code lässt sich bilden mit
local lang = mw.language.new( code )
tostring( lang )
ergibtlang.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 )
- lang:parseFormattedNumber( s )
- lang:formatDate( format, timestamp, local )
- Kennt alle Formatierungsdetails; formatiert gemäß der bei Konstruktion von lang gültigen Sprache.
- lang:formatDuration( seconds, allowedIntervals )
- lang:getDurationIntervals( seconds, allowedIntervals )
- lang:getFallbackLanguages()
- lang:plural( n, singular, plural )
- lang:convertPlural( n, forms )
- lang:grammar( case, word )
- lang:convertGrammar( word, case )
- lang:gender( what, masculine, feminine, neutral )
- 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 )
‎
- sonst
‏
bzw. durchlang:getDirMarkEntity( true )
- lang:toBcp47Code()
mw.message
[Bearbeiten | Quelltext bearbeiten]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-Objekt
[Bearbeiten | Quelltext 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 )
- 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
oderfalse
je nach Existenz der Systemnachricht.- msg:isBlank()
true
wenn der Bezeichner der Systemnachricht nicht existiert oder ihr Inhalt leer ist; sonstfalse
.- msg:isDisabled()
true
wenn der Bezeichner der Systemnachricht nicht existiert oder ihr Inhalt leer ist oder die Zeichenkette"-"
; sonstfalse
.
- → 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.