Module:Sandbox/ABaso (WMF)/InfoboxImage explained

-- Inputs:-- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link-- page - page to display for multipage images (DjVu)-- imgclass - CSS class for microformats (usually photo)-- size - size to display the image-- maxsize - maximum size for image-- sizedefault - default size to display the image if size param is blank-- alt - alt text for image-- title - title text for image-- border - set to yes if border-- center - set to yes, if the image has to be centered-- upright - upright image param-- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it-- link - page to visit when clicking on image-- Outputs:-- Formatted image.-- More details available at the "Module:InfoboxImage/doc" page

local i = ;

local placeholder_image =

function i.IsPlaceholder(image) -- change underscores to spaces image = mw.ustring.gsub(image, "_", " "); assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil') -- if image starts with if mw.ustring.sub(image,1,2)

"]*)|.*", "%1"); assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil') end -- Trim spaces image = mw.ustring.gsub(image, '^[]*(.-)[]*$', '%1'); assert(image ~= nil, "mw.ustring.gsub(image, '^[]*(.-)[]*$', '%1') must not return nil") -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1))

mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end -- Trim spaces image = mw.ustring.gsub(image, '^[]*(.-)[]*$', '%1'); -- capitalise first letter image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);

for i,j in pairs(placeholder_image) do if image

j then return true end end return falseend

function i.InfoboxImage(frame) local image = frame.args["image"]; if image

"" or image

nil then return ""; end if image

" " then return image; end if frame.args["suppressplaceholder"] ~= "no" then if i.IsPlaceholder(image)

true then return ""; end end

if mw.ustring.lower(mw.ustring.sub(image,1,5))

"http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6))

"[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then return ""; end if mw.ustring.sub(image,1,2) == "[[" then -- search for thumbnail images and add to tracking cat if found if mw.title.getCurrentTitle.namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then return image .. ""; elseif mw.title.getCurrentTitle.namespace

0 then return image .. ""; else return image; end elseif mw.ustring.sub(image,1,2)

"