Module:InfoboxParamCheck

From Droid Reference Library
Revision as of 16:26, 12 August 2018 by Drl-admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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