Kraftens Arkiver
Advertisement

Dokumentation for dette modul kan oprettes på Modul:InfoboxParamCheck/dok

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
Advertisement