Module:Characters
Documentation for this module may be created at Module:Characters/doc
-- Module:Characters
local p = {}
-- 1) Define the ordered groups of characters
p.groups = {
{ name = "Main cast", list = {
"Mike","Lucy","Paulo","Daisy","David","Abbey","Sue","Augustus"
}},
{ name = "Secondary cast", list = {
"Amaya","Katie","Stacy","Jasmine","Sandy","Tess",
"James","Jessica","Rachel","Matt","Madison"
}},
{ name = "Students", list = {
"Alec McCain","Mina","Cassidy","Courtney","Flower Girl",
"Three Weird Girls","John","Craig","Roger","Tiff",
"Darwin","Dylan","Felix","Finn","Lucas","Max"
}},
{ name = "Siblings", list = {
"Chris","Haley","Jordan","Sam","Paulo's sister","Molly","Aaron"
}},
{ name = "Parents", list = {
"Abraham","Charlotte","Amaya's dad","Augustus's dad","Augustus's mom",
"Daisy's mom","Teddy","David's mom","Ellen","Janet",
"Kevin","Lucy's dad","Lucy's mom","Mike's dad","Paulo's dad",
"Rose Muir","Sandy's mom","Sue's mom"
}},
{ name = "Pets", list = {
"Blur","Chirpy","Lily","Yashy"
}},
{ name = "School faculty", list = {
"Gym Teacher (High School)","Lani Amalu","Sir Poodles of Noodles",
"Principal","Sex-Ed Teacher"
}},
{ name = "Other characters", list = {
"Alejandro","Toby","Zachary","Catherine","Emma",
"Justin","Lauren","Melanie","Miranda","Turtle"
}},
{ name = "Background characters", list = {
"List of background characters"
}},
}
-- 2a) Render the navbox wikitext
function p.renderNav(frame)
local args = {
"{{Navbox",
"| name = Characters",
"| title = Characters",
"| listclass = hlist",
"| state = " .. (frame.args.state or "autocollapse")
}
for i, grp in ipairs(p.groups) do
table.insert(args, "| group" .. i .. " = " .. grp.name)
local items = {}
for _, page in ipairs(grp.list) do
table.insert(items, "* [[" .. page .. "]]" )
end
table.insert(args, "| list" .. i .. " =\n" .. table.concat(items, "\n"))
end
table.insert(args, "}}")
-- Here's the fix: parse the string as wikitext
return frame:preprocess(table.concat(args, "\n"))
end
-- 2b) Render the plain list page
function p.renderList(frame)
local out = {""}
for _, grp in ipairs(p.groups) do
table.insert(out, "== " .. grp.name .. " ==\n")
table.insert(out, '<div style="column-count: 3; column-gap: 2em;">')
for _, page in ipairs(grp.list) do
table.insert(out, "* [[" .. page .. "]]" )
end
table.insert(out, "</div>\n")
table.insert(out, "\n")
end
return table.concat(out, "\n")
end
return p