Hilfe:Lua/Umgebung
{{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-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]
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.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 ) 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,
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“.<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
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:<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 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<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]
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 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() 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
enals 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 )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 ) 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.
- 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 )
‎- sonst
‏bzw. durchlang:getDirMarkEntity( true ) - lang:toBcp47Code()
mw.message[Bearbeiten]
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.
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 ) 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
#invokeWikitext 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()
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[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>