Module:Maintenance
Jump to navigation
Jump to search
This module is used by maintenance templates to generate any number of game-specific maintenance categories. It is also used to auto-generate documentation for said templates.
local p = {}
local Franchise = require("Module:Franchise")
local utilsArg = require("Module:UtilsArg")
local utilsMarkup = require("Module:UtilsMarkup")
local utilsPage = require("Module:UtilsPage")
local utilsTable = require("Module:UtilsTable")
function p.Categories(frame)
local templateName = mw.title.new(frame:getParent():getTitle()).text
local templateType, category, subcategoryFormat, communityCategory = frame.args[1], frame.args[2], frame.args[3], frame.args[4]
local templateSpec = p.Templates[templateName]
if not templateSpec and templateType then
templateSpec = p.Templates[templateType]
end
if not templateSpec then
error(string.format("No template spec found for template name '%s' or template type '%s'", templateName, templateType))
end
local args, err = utilsArg.parse(frame:getParent().args, templateSpec)
local games = utilsTable.concat(args.games or {}, args._games or {})
local result = p.printCategories(category, subcategoryFormat, communityCategory, games)
if err then
result = result..utilsMarkup.categories(err.categories)
end
return result
end
function p.printCategories(category, subcategoryFormat, communityCategory, games)
if utilsPage.inNamespace({"User", "Zelda_Wiki", "Help", "Guidelines"}) then
return ""
end
local categories = "[["..category.."]]"
if utilsPage.inNamespace("Community") then
communityCategory = communityCategory or string.format(subcategoryFormat, "Community")
categories = categories.."[["..communityCategory.."]]"
return categories
end
if subcategoryFormat and games then
for i, game in ipairs(games) do
local gameName = Franchise.shortName(game)
if gameName then
categories = categories.."[["..string.format(subcategoryFormat, gameName).."]]"
end
end
end
return categories
end
p.Templates = {
["Block"] = {
params = {
[1] = {
name = "games",
type = "string",
enum = Franchise.enum(),
split = true,
trim = true,
nilIfEmpty = true,
desc = "A comma-separated list of game codes indicating which game(s) the article or section pertains to."
},
},
examples = {
{"OoS, OoA"},
{},
},
},
["Inline"] = {
usage = "To use this template, insert the following immediately after punctuation, as if [[Guidelines:References|adding a reference]].",
params = {
[1] = {
name = "games",
type = "string",
enum = Franchise.enum(),
split = true,
trim = true,
nilIfEmpty = true,
desc = "A comma-separated list of game codes indicating which game(s) the statement pertains to."
},
},
examples = {
{"OoS, OoA"},
{},
},
},
["Clarify"] = {
usage = "To use this template, insert the following immediately after punctuation, as if [[Guidelines:References|adding a reference]].",
params = {
[1] = {
name = "games",
type = "string",
enum = Franchise.enum(),
split = true,
trim = true,
nilIfEmpty = true,
desc = "A comma-separated list of game codes indicating which game(s) the statement pertains to."
},
reason = {
type = "string",
desc = "An explanation of what is unclear or vague about the statement. This will appear in the template's tooltip.",
},
},
},
["Lacking Images"] = {
params = {
[1] = {
name = "games",
type = "string",
enum = Franchise.enum(),
split = true,
trim = true,
nilIfEmpty = true,
desc = "A comma-separated list of game codes indicating which game(s) the article or section pertains to."
},
reason = {
type = "string",
desc = "An explanation of what images are needed.",
},
},
examples = {
{"OoS, OoA"},
{"TWWHD", reason = "Missing images of the second floor"},
{},
},
},
["Improve"] = {
params = {
[1] = {
name = "date",
type = "string",
desc = "The date the template was placed on the article. The month and year will do (e.g. December 2013).",
},
[2] = {
name = "games",
type = "string",
enum = Franchise.enum(),
split = true,
trim = true,
nilIfEmpty = true,
desc = "A comma-separated list of game codes indicating which game(s) the article or section pertains to."
},
},
examples = {
{"December 2013", "OoS, OoA"},
{},
},
},
["Incomplete"] = {
paramOrder = {"type", "reason", "subcat", "subcat2", "games"},
params = {
type = {
type = "string",
desc = "The type of incomplete content. Ex: listing, section.",
default = "article",
},
reason = {
type = "content",
desc = "Reason why this article is incomplete. Brief and specific.",
},
subcat = {
type = "string",
desc = "For adding the article to a different sub-category, if needed. (Supersedes <code>type</code>)",
enum = {"listing", "nomenclature"},
},
subcat2 = {
type = "string",
desc = "For adding an additional sub-category.",
enum = {"listing", "nomenclature"},
},
games = {
type = "string",
enum = Franchise.enum(),
split = true,
trim = true,
nilIfEmpty = true,
desc = "A comma-separated list of game codes indicating which game(s) the article or section pertains to."
}
},
examples = {
{},
{
type = "section",
reason = "A description of what's missing",
games = "TWW, TWWHD",
subcat2 = "listing",
},
}
},
["Verify"] = {
usage = "To use this template, insert the following immediately after punctuation, as if [[Guidelines:References|adding a reference]].",
params = {
[1] = {
name = "games",
type = "string",
enum = Franchise.enum(),
split = true,
trim = true,
nilIfEmpty = true,
desc = "A comma-separated list of game codes indicating which game(s) the statement pertains to."
},
reason = {
type = "string",
desc = "To explain in further detail what needs verification.",
},
},
},
}
return p