|
|
Line 1: |
Line 1: |
| -- 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)
| |
| -- 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 = {};
| |
|
| |
| 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 [[ then remove that and anything after |
| |
| if mw.ustring.sub(image,1,2) == "[[" then
| |
| image = mw.ustring.sub(image,3);
| |
| image = mw.ustring.gsub(image, "([^|]*)|.*", "%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 false
| |
| end
| |
|
| |
| 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 .. "[[Category:Pages using infoboxes with thumbnail images]]";
| |
| elseif mw.title.getCurrentTitle().namespace == 0 then
| |
| return image .. "[[Category:Pages using deprecated image syntax]]";
| |
| else
| |
| return image;
| |
| end
| |
| elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
| |
| return image;
| |
| elseif mw.ustring.sub(image,1,1) == "<" then
| |
| return image;
| |
| elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
| |
| -- Found strip marker at begining, so pass don't process at all
| |
| return image;
| |
| elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
| |
| -- Found strip marker at begining, so pass don't process at all
| |
| return image;
| |
| else
| |
| local result = "";
| |
| local page = frame.args["page"];
| |
| local size = frame.args["size"];
| |
| local maxsize = frame.args["maxsize"];
| |
| local sizedefault = frame.args["sizedefault"];
| |
| local alt = frame.args["alt"];
| |
| local link = frame.args["link"];
| |
| local title = frame.args["title"];
| |
| local border = frame.args["border"];
| |
| local upright = frame.args["upright"] or "";
| |
| local thumbtime = frame.args["thumbtime"] or "";
| |
| local center= frame.args["center"];
| |
|
| |
| -- 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
| |
|
| |
| if maxsize ~= "" and maxsize ~= nil then
| |
| -- if no sizedefault then set to maxsize
| |
| if sizedefault == "" or sizedefault == nil then
| |
| sizedefault = maxsize
| |
| end
| |
| -- check to see if size bigger than maxsize
| |
| if size ~= "" and size ~= nil then
| |
| local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
| |
| local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
| |
| if sizenumber>maxsizenumber and maxsizenumber>0 then
| |
| size = maxsize;
| |
| end
| |
| end
| |
| end
| |
| -- add px to size if just a number
| |
| if (tonumber(size) or 0) > 0 then
| |
| size = size .. "px";
| |
| end
| |
| -- add px to sizedefault if just a number
| |
| if (tonumber(sizedefault) or 0) > 0 then
| |
| sizedefault = sizedefault .. "px";
| |
| end
| |
|
| |
| result = "[[File:" .. image;
| |
| if page ~= "" and page ~= nil then
| |
| result = result .. "|page=" .. page;
| |
| end
| |
| if size ~= "" and size ~= nil then
| |
| result = result .. "|" .. size;
| |
| elseif sizedefault ~= "" and sizedefault ~= nil then
| |
| result = result .. "|" .. sizedefault;
| |
| else
| |
| result = result .. "|frameless";
| |
| end
| |
| if center == "yes" then
| |
| result = result .. "|center"
| |
| end
| |
| if alt ~= "" and alt ~= nil then
| |
| result = result .. "|alt=" .. alt;
| |
| end
| |
| if link ~= "" and link ~= nil then
| |
| result = result .. "|link=" .. link;
| |
| end
| |
| if border == "yes" then
| |
| result = result .. "|border";
| |
| end
| |
| if upright == "yes" then
| |
| result = result .. "|upright";
| |
| elseif upright ~= "" then
| |
| result = result .. "|upright=" .. upright;
| |
| end
| |
| if thumbtime ~= "" then
| |
| result = result .. "|thumbtime=" .. thumbtime;
| |
| end
| |
| if title ~= "" and title ~= nil then
| |
| result = result .. "|" .. title;
| |
| elseif alt ~= "" and alt ~= nil then
| |
| result = result .. "|" .. alt;
| |
| end
| |
| result = result .. "]]";
| |
|
| |
| return result;
| |
| end
| |
| end
| |
|
| |
| return i;
| |