Module:InfoboxParamCheck: Difference between revisions

From SW420
Jump to navigation Jump to search
imported>Cade Calrayn
Undo revision 10748269 by Cade Calrayn (talk)
 
Add a first attempt at adding images to page
Line 5: Line 5:
-- category "%s" when the page is saved.
-- category "%s" when the page is saved.
return string.format('[[%s:%s]]', 'Category', cat)
return string.format('[[%s:%s]]', 'Category', cat)
end
local function makeImageLink(img)
-- This is to allow images missing from infoboxes to be seen by MissingFiles.
-- We're forcing any missing images to get added plainly onto the page.
return string.format('[[%s:%s]]', 'File', img)
end
end


Line 15: Line 21:
     local extra = false
     local extra = false
     local arglist = {}
     local arglist = {}
    local parentargs = frame:getparent().args
    local imagearg = nil
     for _, k in ipairs(frame.args) do
     for _, k in ipairs(frame.args) do
         arglist[k] = true
         arglist[k] = true
Line 30: Line 38:
         end
         end
     end
     end
     for k, v in pairs(frame:getParent().args) do
     for k, v in pairs(parentargs) do
         if not arglist[k] and not optional[k] then
         if not arglist[k] and not optional[k] then
             extra = true
             extra = true
         elseif empty and not ignore[k] and #v > 0 then
         elseif empty and not ignore[k] and #v > 0 then
             empty = false
             empty = false
        end
        if string.match(arglist[k],image) then
            imagearg = k
         end
         end
         arglist[k] = nil
         arglist[k] = nil
Line 44: Line 55:
     end
     end
     local ret = {''}
     local ret = {''}
    if imagearg then
        ret[#ret + 1] = makeImageLink(parentargs[imagearg])
    end
     if missing then
     if missing then
         ret[#ret + 1] = makeCategoryLink('Infoboxes with missing parameters')
         ret[#ret + 1] = makeCategoryLink('Infoboxes with missing parameters')

Revision as of 07:00, 20 February 2023

Documentation 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

local function makeImageLink(img)
	-- This is to allow images missing from infoboxes to be seen by MissingFiles.
	-- We're forcing any missing images to get added plainly onto the page.
	return string.format('[[%s:%s]]', 'File', img)
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 = {}
    local parentargs = frame:getparent().args
    local imagearg = nil
    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(parentargs) 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
        if string.match(arglist[k],image) then
            imagearg = k
        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 imagearg then
        ret[#ret + 1] = makeImageLink(parentargs[imagearg])
    end
    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