Hilfe:Lua/Umgebung
From Wikipedia, the free encyclopedia
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
Abfrage allgemeiner Informationen über das Wiki-Projekt und einige statistische Angaben.
- mw.site.currentVersion
- Aktuelle Version von MediaWiki:
1.46.0-wmf.20 (212dc13)– {{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.wikiId
- Datenbankname des Wikis:
dewiki - 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.nameistModulmw.site.namespaces[12].nameistHilfemw.site.namespaces.wp.idist4
- 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,
niloder"*"ist, wird eine table mit den folgenden Elementen zurückgegeben; ansonsten das Schlüsselwort erwartet.all– Gesamtzahl der Seiten, Dateien und Unterkategorien.pagesfilessubcats
- 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
- 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
ProjectstattWikipedia. - .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 (BenutzerundBenutzerin).- .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 jedochScribuntound bei einzelnen Seiten etwacssoderjavascript.
- 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
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 oderwgExtraLanguageNamesistall– alle bekannten Sprachenmwfile– nur wenn die Sprachemwerfü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
enals 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
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
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
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.
paramskann 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
#invokeWikitext 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()
trueoderfalseje nach Existenz der Systemnachricht.- msg:isBlank()
truewenn der Bezeichner der Systemnachricht nicht existiert oder ihr Inhalt leer ist; sonstfalse.- msg:isDisabled()
truewenn der Bezeichner der Systemnachricht nicht existiert oder ihr Inhalt leer ist oder die Zeichenkette"-"; sonstfalse.
os
- → 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.