|
Modul:Version
[Lesen | Bearbeiten | Versionen | Aktualisieren]
DokumentationSpringe zum Quelltext ↴
Zum Gebrauch von Lua-Modulen siehe die Modul-Hilfe.

Das Modul Version stellt Funktionen zur Verfügung, die zur Darstellung von Minecraft-Versionsnummern dienen:
- version: liefert für jede Minecraft-Plattform und -Edition die aktuelle Versionsnummer.
- versionlink: verlinkt die Versionsnummer auf die richtige Versionsgeschichten-Seite.
Außerdem wird das Untermodul Version/Nummern verwendet, in dem alle aktuellen Versionsnummern hinterlegt sind.
Aufruf
Die Parameter des Aufrufers werden automatisch übergeben. Das sind:
für {{#invoke: Version|version}}
siehe Vorlage:Version
für {{#invoke: Version|versionlink}}
siehe Vorlage:Versions-Link
Anwendung
Liste der Vorlagen, die dieses Modul verwenden
Vorlagen | |
---|---|
Module |
local p = {} p.version = function( f ) local args = f if f == mw.getCurrentFrame() then args = require( 'Modul:ParameterUmwandeln' ).merge( true ) end -- Zentral gesammelte Versionsnummern einlesen local versions = mw.loadData( 'Modul:Version/Nummern' ) local version = 'pc' if args.c then args.classic = '1' end -- wenn es einen Parameter <typ>=1 gibt und der Typ in der Versionsliste vorkommt: Merken. for v in pairs( args ) do if type( v ) == 'string' then v = v:lower() if versions[v] then version = v break end end end local edition if args.s or args.server then edition = versions[version .. '-server'] end if not edition then edition = versions[version] end -- Versionsnummer aus der Liste holen, prefix für die Link-Vorlage dito local versionNum = edition[1] or edition local prefix = edition.prefix or '' -- Wenn es keine Versionsnummer zu reporten gibt oder der Parameter 'nolink=1' gesetzt wurde, nutze nur den -- Text, ansonsten erzeuge einen Link auf die Versionsgeschichte local link = '' if args.nolink or versionNum == '' then link = args[1] or versionNum else link = p.versionlink({ prefix .. ' ' .. (args[1] or versionNum), args[2] or args[1] or versionNum }) end -- Gibt es den Parameter 't=' mit Inhalt, dann wird die Vorlage:Tabellenauswahl hinzugezogen if args.t then if args[1] then -- Wurde eine Soll-Versionsnummer gegeben, vergleichen wir damit return f:expandTemplate{ title = 'Tabellenauswahl', args = { args[1] == versionNum and 'Ja' or 'Nein', link } } else -- ansonsten ist "grün" angesagt return f:expandTemplate{ title = 'Tabellenauswahl', args = { 'Ja', link } } end else return link end end p.versionlink = function( f ) local args = f if f == mw.getCurrentFrame() then args = require( 'Modul:ParameterUmwandeln' ).merge( true ) end local version = (args[1] or ''):gsub("^%s*(.-)%s*$", "%1") local lcversion = mw.ustring.lower(version) local text = args[2] or args[1] or '' local versions = mw.loadData( 'Modul:Version/Nummern' ) -- Ab hier: Bestimmung des Link-Ziels. Zunächst einmal schauen wir nach den definierten Prefixes local prefix = '' local link = '' local nBeginn local nEnde local keys = {} for name, _ in pairs(versions) do keys[#keys + 1] = name end table.sort(keys) for k=1,#keys do daten = versions[keys[k]] prefix = daten.prefix or '' if prefix ~= '' then if mw.ustring.sub(version,1,string.len(prefix)) == prefix then version = mw.ustring.sub(version,string.len(prefix) + 1):gsub("^%s*(.-)%s*$", "%1") link = daten.page break end end end -- Wenn es eine Klammer mit Inhalt gibt, nimm den Klammerinhalt. -- Dies kann ein Datum oder eine spezielle Versionskennung sein _,_,special = mw.ustring.find(version, '%((.-)%)') if special ~= nil then version = special:gsub("^%s*(.-)%s*$", "%1") end -- Einige Texte aus den Versionsnamen werden entfernt oder ersetzt, um den richtigen Anker zu erzeugen for search,replace in pairs({ ['SURVIVAL TEST'] = '', ['Seecret Friday Update '] = 'SF', ['Seecret Saturday '] = 'SS' }) do nBeginn, nEnde = mw.ustring.find(version, search,0,true) if nBeginn ~= nil then version = version:gsub(search, replace) break end end -- -- Und jetzt die Versionsnummer an den Link tackern, wenn wir schon einen haben. if link ~= '' then link = link .. version end -- Jetzt folgt die Überprüfung einiger "spezieller Versionsnamen", die eine eigene Weiterleitung auf -- die richtige Seite haben if link == '' then for index,code in pairs({ 'Preview', 'Prerelease', 'Pre-release', 'pre', 'Pre', 'rc', 'RC' }) do nBeginn, nEnde = mw.ustring.find(version, code,0,true) if nBeginn ~= nil then link = version break end end end -- Versionsnummern wie '13w05a' haben - wie die zuvor betrachteten Versionsnamen - direkte Weiterleitungen if link == '' then if version:sub(3,3) == 'w' then link = version end end -- Pocket Edition builds haben, wie Snapshots, eigene Weiterleitungsseiten. if link == '' then if string.match(version, '[0-9%.]+ alpha build %d+') ~= nil then link = version end if string.match(version, '[0-9%.]+ beta build %d+') ~= nil then link = version end if string.match(version, '[0-9%.]+ build %d+') ~= nil then link = version:gsub("build", "alpha build") end end -- Hier ausstehend: Links auf 'Pre' oder lowercase 'Test' (-> Classic) -- Der Rest sind Vollversions-Nummern, deren Weiterleitung mit dem Wort "Vollversion" beginnt if link == '' then link = 'Vollversion ' .. version end return '[[' .. link .. '|' .. text .. ']]' end return p