Module:InfoboxParamCheck

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 for k, v in pairs(frame:getParent.args) do       if not arglist[k] then extra = true elseif empty and not (k:match('name') or k:match('title')) 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 ret[#ret + 1] = makeCategoryLink('Infoboxes with missing parameters') 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