Module:Entry/titles: Difference between revisions
Jump to navigation
Jump to search
HyperNervie (talk | contribs) (Lookup table needed in Module:Entry/metatable. Only GBA and Arcade titles yet. Others coming soon.) |
HyperNervie (talk | contribs) (Reimplement to support ordered traversal) |
||
| Line 1: | Line 1: | ||
local | local p = {} | ||
p.sequence = { | |||
{ | |||
console = "GBA", | |||
name = "Rhythm Tengoku", | |||
stages = require("Module:Entry/titles/GBA") | |||
}, | }, | ||
{ | |||
console = "Arcade", | |||
name = "Rhythm Tengoku (Arcade)", | |||
stages = require("Module:Entry/titles/Arcade") | |||
}, | }, | ||
DS = {}, | { | ||
Wii = {}, | console = "DS", | ||
name = "Rhythm Heaven", | |||
stages = {} | |||
}, { | }, | ||
{ | |||
console = "Wii", | |||
name = "Rhythm Heaven Fever", | |||
stages = {} | |||
}, | |||
} | { | ||
console = "3DS", | |||
name = "Rhythm Heaven Megamix", | |||
stages = {} | |||
}, | |||
{ | |||
console = "Switch", | |||
name = "Rhythm Heaven Groove", | |||
stages = {} | |||
} | |||
} | |||
local | local stageEntryMT = { | ||
__index = function(stage, n) | __index = function(stage, n) | ||
return stage[tonumber(n)] | return stage.entries[tonumber(n)] | ||
end | end | ||
} | } | ||
for _, | p.lookup = {} | ||
for _, stage in | for _, rh in ipairs(p.sequence) do | ||
setmetatable(stage, | local stageLookup = {} | ||
for _, stage in ipairs(rh.stages) do | |||
stageLookup[stage.label] = stage | |||
setmetatable(stage.entries, stageEntryMT) | |||
end | end | ||
p.lookup[rh.console] = stageLookup | |||
end | end | ||
return | setmetatable(p.lookup, { | ||
__index = function(t, entry) | |||
if type(entry) == "table" then | |||
return t[entry.console][entry.stage].entries[entry.number] | |||
end | |||
end | |||
}) | |||
return p | |||
Revision as of 10:17, 9 August 2025
Documentation for this module may be created at Module:Entry/titles/doc
local p = {}
p.sequence = {
{
console = "GBA",
name = "Rhythm Tengoku",
stages = require("Module:Entry/titles/GBA")
},
{
console = "Arcade",
name = "Rhythm Tengoku (Arcade)",
stages = require("Module:Entry/titles/Arcade")
},
{
console = "DS",
name = "Rhythm Heaven",
stages = {}
},
{
console = "Wii",
name = "Rhythm Heaven Fever",
stages = {}
},
{
console = "3DS",
name = "Rhythm Heaven Megamix",
stages = {}
},
{
console = "Switch",
name = "Rhythm Heaven Groove",
stages = {}
}
}
local stageEntryMT = {
__index = function(stage, n)
return stage.entries[tonumber(n)]
end
}
p.lookup = {}
for _, rh in ipairs(p.sequence) do
local stageLookup = {}
for _, stage in ipairs(rh.stages) do
stageLookup[stage.label] = stage
setmetatable(stage.entries, stageEntryMT)
end
p.lookup[rh.console] = stageLookup
end
setmetatable(p.lookup, {
__index = function(t, entry)
if type(entry) == "table" then
return t[entry.console][entry.stage].entries[entry.number]
end
end
})
return p