local VariablesLua = mw.ext.VariablesLua
local p = {}
local modeAliases = {
["java pre-classic"] = "java pre-Classic",
["java classic"] = "java Classic",
["java indev"] = "java Indev",
["java infdev"] = "java Infdev",
["java alpha"] = "java Alpha",
["java edition alpha"] = "java Alpha",
["java beta"] = "java Beta",
["java edition beta"] = "java Beta",
["je"] = "java",
["java"] = "java",
["java edition"] = "java",
["java edition upcoming"] = "java upcoming",
["java upcoming"] = "java upcoming",
["upcoming java"] = "java upcoming",
["upcoming java edition"] = "java upcoming",
["pe alpha"] = "pocket Alpha",
["pocket alpha"] = "pocket Alpha",
["pocket edition alpha"] = "pocket Alpha",
["pe"] = "pocket",
["pocket"] = "pocket",
["pocket edition"] = "pocket",
["ce"] = "console",
["lce"] = "console",
["console"] = "console",
["legacy console"] = "console",
["console edition"] = "console",
["legacy console edition"] = "console",
["be"] = "bedrock",
["bedrock"] = "bedrock",
["bedrock edition"] = "bedrock",
["be upcoming"] = "bedrock upcoming",
["bedrock upcoming"] = "bedrock upcoming",
["bedrock edition upcoming"] = "bedrock upcoming",
["upcoming bedrock"] = "bedrock upcoming",
["upcoming bedrock edition"] = "bedrock upcoming",
["3ds"] = "new3ds",
["new3ds"] = "new3ds",
["new 3ds"] = "new3ds",
["realms"] = "realms",
["pi"] = "pi",
["raspberry pi"] = "pi",
["edu"] = "minecraftedu",
["minecraftedu"] = "minecraftedu",
["education"] = "education",
["education edition"] = "education",
["education upcoming"] = "education upcoming",
["education edition upcoming"] = "education upcoming",
["upcoming education"] = "education upcoming",
["upcoming education edition"] = "education upcoming",
["ps4"] = "ps4",
["playstation4"] = "ps4",
["playstation 4"] = "ps4",
["earth"] = "earth",
["minecraft earth"] = "earth",
["dungeons"] = "dungeons",
["minecraft dungeons"] = "dungeons",
["dungeons arcade"] = "dungeons arcade",
["minecraft dungeons arcade"] = "dungeons arcade",
["legends"] = "legends",
["minecraft legends"] = "legends",
["china"] = "china",
["?"] = "unknown",
["unknown"] = "unknown",
["bs"] = "bedrock server",
["bds"] = "bedrock server",
["bedrock server"] = "bedrock server",
["bedrock dedicated server"] = "bedrock server"
}
local headerText = {
["java pre-Classic"] = "[[Java Edition pre-Classic]]",
["java Classic"] = "[[Java Edition Classic]]",
["java Indev"] = "[[Java Edition Indev]]",
["java Infdev"] = "[[Java Edition Infdev]]",
["java Alpha"] = "[[Java Edition Alpha]]",
["java Beta"] = "[[Java Edition Beta]]",
["java"] = "[[Java Edition version history|''Java Edition'']]",
["java upcoming"] = "[[Planned versions#Java Edition|Upcoming Java Edition]]",
["pocket Alpha"] = "[[Pocket Edition Alpha]]",
["pocket"] = "[[Pocket Edition Alpha]]",
["bedrock"] = "[[Bedrock Edition version history|''Bedrock Edition'']]",
["bedrock upcoming"] = "[[Planned versions#Bedrock Edition|Upcoming Bedrock Edition]]",
["minecraftedu"] = "[[MinecraftEdu#Versions|''MinecraftEdu'']]",
["education"] = "[[Education Edition version history|''Education Edition'']]",
["education upcoming"] = "[[Planned versions#Education Edition|Upcoming Education Edition]]",
["china"] = "[[China Edition#History|''China Edition'']]",
["bedrock server"] = "[[Bedrock Dedicated Server#History|Realms Plus & Bedrock Dedicated Server]]",
["console"] = "[[Legacy Console Edition version history|Legacy Console Edition]]",
["realms"] = "[[Realms#History|Realms]]",
["new3ds"] = "[[New Nintendo 3DS Edition version history|''New Nintendo 3DS Edition'']]",
["pi"] = "[[Pi Edition#Release|''Pi Edition'']]",
["ps4"] = "[[Legacy Console Edition version history|''PlayStation 4 Edition'']]",
["earth"] = "[[MCE:Version history|''Minecraft Earth'']]",
["dungeons"] = "[[MCD:Version_history|''Minecraft Dungeons'']]",
["dungeons arcade"] = "[[MCD:Arcade|''Minecraft Dungeons Arcade'']]",
["legends"] = "[[MCL:Version_history|''Minecraft Legends'']]"
}
local function resetVariables()
VariablesLua.vardefine("history-ver")
VariablesLua.vardefine("history-xbox-ver")
VariablesLua.vardefine("history-xbone-ver")
VariablesLua.vardefine("history-ps-ver")
VariablesLua.vardefine("history-wiiu-ver")
VariablesLua.vardefine("history-switch-ver")
end
local function consoleColumn(edition, version, rows, row)
local frame = mw.getCurrentFrame()
local oldVersion = VariablesLua.var("history-"..edition.."-version")
local id = VariablesLua.var("history-"..edition.."-id", 0)
if version == oldVersion or oldVersion then
local oldValue = VariablesLua.var("history-"..edition.."rowspan-"..id, 0)
VariablesLua.vardefine("history-"..edition.."rowspan-"..id, oldValue + rows)
else
local newId = id + 1
VariablesLua.vardefine("history-"..edition.."-version", version)
VariablesLua.vardefine("history-"..edition.."-id", newId)
row:tag("th")
:addClass("nowrap")
:attr("rowspan", VariablesLua.var_final("history-"..edition.."-rowspan-"..id))
:wikitext(frame:expandTemplate{title = "Version link", args = {version}})
end
end
function p.main(frame)
local args = require('Module:ProcessArgs').merge()
local setMode = args[1] and (modeAliases[args[1]:lower()] or args[1]:lower())
local html = VariablesLua.var("history-table")
if setMode == "foot" then
VariablesLua.vardefine("history-table")
resetVariables()
return mw.html.create("table"):addClass("wikitable"):attr("data-description", "History"):node(html)
end
local row = mw.html.create("tr")
if setMode ~= "" then
row:tag("th")
:attr("colspan", "6")
:wikitext(headerText[setMode])
resetVariables()
VariablesLua.vardefine("history-mode", setMode)
VariablesLua.vardefine("history-table", html..tostring(row))
return
end
local mode = VariablesLua.var("history-mode")
local rows
if mode == "console" then
rows = #args - 1
consoleColumn("xbox", args.xbox, rows, row)
consoleColumn("xbone", args.xbone, rows, row)
consoleColumn("ps", args.ps, rows, row)
consoleColumn("wiiu", args.wiiu, rows, row)
consoleColumn("switch", args.switch, rows, row)
row:tag("td"):wikitext(frame:preprocess(args[2]))
else
rows = #args - 2
local version = args[2]
local devVersion = args.snap
local oldVersion = VariablesLua.var("history-version")
local id = VariablesLua.var("history-id", 0)
local column
if not devVersion or version ~= "" or version ~= oldVersion then
VariablesLua.vardefine("history-version", version)
VariablesLua.vardefine("history-id", id + 1)
column = row:tag("th")
:addClass("nowrap")
:attr("rowspan", VariablesLua.var_final("history-rowspan-"..id, rows))
:wikitext(frame:expandTemplate{title = "Version link", args = {version}})
end
if devVersion then
column:attr("colspan", 2)
row:tag("th")
:addClass("nowrap")
:attr{["rowspan"] = rows, ["colspan"] = 3}
:wikitext(frame:expandTemplate{title = "Version link", args = {devVersion}})
local oldValue = VariablesLua.var("history-rowspan-"..id, 0)
VariablesLua.vardefine("history-rowspan-"..id, oldValue + rows)
else
column:attr("colspan", 5)
end
row:tag("td"):wikitext(frame:preprocess(args[3]))
end
--[[
for i, text in ipairs(args) do
if i > 3 then
mw.html.create("tr"):tag("td"):wikitext(frame:preprocess(text))
end
end
--]]
VariablesLua.vardefine("history-table", html..tostring(row))
return
end
return p
Advertisement
Module:Unavailablehoax/History
Advertisement