Module:Entry/metatable: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary Tag: Reverted |
m (Reverted edits by Tailx (talk) to last revision by HyperNervie) Tag: Rollback |
||
| Line 93: | Line 93: | ||
local animateStages = { | local animateStages = { | ||
GBA = {T = true}, | GBA = {T = true}, | ||
Arcade = { | Arcade = {}, | ||
DS = {E = true, T = true}, | DS = {E = true, T = true}, | ||
Wii = {E = true, T = true, EX = true, PE = true}, | Wii = {E = true, T = true, EX = true, PE = true}, | ||
Latest revision as of 04:10, 5 December 2025
Documentation for this module may be created at Module:Entry/metatable/doc
local titles = require("Module:Entry/titles").lookup
local entryMT = {}
function entryMT.__index(entry, k)
local v = entryMT[k](entry)
rawset(entry, k, v)
return v
end
function entryMT._data(entry)
return titles[entry.console][entry.stage].entries[entry.number]
end
function entryMT.target(entry)
return entry._data[1] or ""
end
function entryMT.title(entry)
return entry._data[2] or entry.target
end
function entryMT.text(entry)
return entry._data[3] or entry.title
end
local function _textWithTempoUp(entry, args)
if entry.target == "" then return "" end
local t = entry.text
if (entry.console == "GBA" or entry.console == "Arcade")
and entry.stage == "EX"
then
local tempoUpSize = args.tempoUpSize or "72px"
local class = ""
if args.class then class = "|class=" .. args.class end
t = mw.ustring.format("%s [[File:TempoUpExtra%s.png|%s%s|link=]]",
t, entry.number, tempoUpSize, class)
end
return t
end
function entryMT.textWithTempoUp()
return _textWithTempoUp
end
function entryMT.selfLink(entry)
return mw.title.getCurrentTitle().prefixedText == entry.target
end
local function _link(entry, args)
if entry.target == "" then return "" end
local title = entry.selfLink and entry.target or entry.title
local t = mw.ustring.format("[[%s|%s]]", title, entry.text)
if (entry.console == "GBA" or entry.console == "Arcade")
and entry.stage == "EX"
then
local tempoUpSize = args.tempoUpSize or "72px"
title = entry.selfLink and "" or entry.title
t = mw.ustring.format("%s [[File:TempoUpExtra%s.png|%s|link=%s]]",
t, entry.number, tempoUpSize, title)
end
return t
end
function entryMT.link()
return _link
end
function entryMT.defaultIconSize(entry)
if entry.console == "GBA" or entry.console == "Arcade" then
return (entry.stage == "E" or entry.stage == "T") and "40px" or "x20px"
elseif entry.console == "DS" then
return (entry.stage == "B" or entry.stage == "C") and "34px"
or (entry.stage == "E" or entry.stage == "T"
or entry.stage == "GB" or entry.stage == "GT") and "40px"
or "32px"
elseif entry.console == "Wii" then
return (entry.stage == "E" or entry.stage == "T"
or entry.stage == "EX" or entry.stage == "PE") and "40px" or "32px"
elseif entry.console == "3DS" then
return "44px"
end
end
function entryMT.iconVariants(entry)
local variants = {}
for _, v in ipairs(entry._data.variants or {}) do
variants[v] = true
end
return variants
end
local function _iconName(entry, args)
local animateStages = {
GBA = {T = true},
Arcade = {},
DS = {E = true, T = true},
Wii = {E = true, T = true, EX = true, PE = true},
["3DS"] = {},
Switch = {}
}
local ext = animateStages[entry.console][entry.stage] and "gif" or "png"
local console = entry.console
if console == "Arcade" then console = "GBA" end
local entryCode = entry._data.icon or (entry.stage .. "-" .. entry.number)
local var = args.variant
if entry.iconVariants[var] then var = " " .. var
else var = "" end
return mw.ustring.format("Game %s %s%s.%s", console, entryCode, var, ext)
end
function entryMT.iconName()
return _iconName
end
local function _icon(entry, args)
local iconSize = args.iconSize or entry.defaultIconSize
local link = entry.selfLink and "" or entry.title
local class = ""
if args.class then class = "|class=" .. args.class end
return mw.ustring.format("[[File:%s|%s%s|link=%s]]",
entry:iconName(args), iconSize, class, link)
end
function entryMT.icon()
return _icon
end
local function _iconAndLink(entry, args)
local span = mw.html.create("span")
:css("white-space", "nowrap")
:wikitext(entry:icon(args))
if entry.stage ~= "?" then span:wikitext(" ", entry:link(args)) end
return tostring(span)
end
function entryMT.iconAndLink()
return _iconAndLink
end
return entryMT