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 header = {
["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)
local oldVersion = VariablesLua.var("history-"..edition.."-version")
local id = VariablesLua.var("history-"..edition.."-id", 0)
if version == 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-"..newId))
: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(header[setMode])
resetVariables()
VariablesLua.vardefine("history-mode", setMode)
VariablesLua.vardefine("history-table", html..tostring(row))
return
end
local mode = VariablesLua.var("history-mode")
if mode == "console" then
local rows = #args - 1
if args.xbox then consoleColumn("xbox", args.xbox, rows) end
if args.xbone then consoleColumn("xbone", args.xbone, rows) end
if args.ps then consoleColumn("ps", args.ps, rows) end
if args.wiiu then consoleColumn("wiiu", args.wiiu, rows) end
if args.switch then consoleColumn("switch", args.switch, rows) end
row:tag("td"):wikitext(frame:preprocess(args[2]))
else
local 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