Module:InfoboxParamCheck
From HoloNet
Jump to navigationJump to searchDocumentation for this module may be created at Module:InfoboxParamCheck/doc
local p = {}
local function makeCategoryLink(cat)
-- "Category" is split out here so that the module isn't put into the
-- category "%s" when the page is saved.
return string.format('[[%s:%s]]', 'Category', cat)
end
function p.main(frame)
if mw.title.getCurrentTitle().namespace ~= 0 then
return ''
end
local missing = false
local empty = true
local extra = false
local arglist = {}
for _, k in ipairs(frame.args) do
arglist[k] = true
end
local ignore = {}
if frame.args.ignore then
for k in frame.args.ignore:gmatch('[^%,]+') do
ignore[k] = true
end
end
local optional = {}
if frame.args.optional then
for k in frame.args.optional:gmatch('[^%,]+') do
optional[k] = true
end
end
for k, v in pairs(frame:getParent().args) do
if not arglist[k] and not optional[k] then
extra = true
elseif empty and not ignore[k] and #v > 0 then
empty = false
end
arglist[k] = nil
end
if next(arglist) then
-- nil if the table is empty, or a string key
-- that evaluates to true if not empty
missing = true
end
local ret = {''}
if missing then
if frame.args.infobox then
ret[#ret + 1] = makeCategoryLink('Character infoboxes with missing parameters')
else
ret[#ret + 1] = makeCategoryLink('Infoboxes with missing parameters')
end
end
if empty then
ret[#ret + 1] = makeCategoryLink('Articles with empty infoboxes')
end
if extra then
ret[#ret + 1] = makeCategoryLink('Infoboxes with unrecognized parameters')
end
return table.concat(ret)
end
return p