Bu modulun sənədləşdirmə səhifəsi səhifəsində yaradıla bilər
local i = {}
local placeholder_image = {
"Blue - Replace this image female.svg",
"Blue - Replace this image male.svg",
"CarersLogo.gif",
"Cricket no pic.png",
"Diagram Needed.svg",
"Example.jpg",
"Female no free image yet.png",
"Flag of None (square).svg",
"Flag of None.svg",
"Flag of.svg",
"Green - Replace this image female.svg",
"Green - Replace this image male.svg",
"Image is needed female.svg",
"Image is needed male.svg",
"Image placeholder.png",
"Image-No portrait-text-BFD-test.svg",
"Image-request.png",
"Insert image here.svg",
"Location map of None.svg",
"Male no free image yet.png",
"Missing flag.png",
"No flag.svg",
"No free portrait.svg",
"No image available.png",
"NO IMAGE YET square.png",
"NO IMAGE YET.png",
"No male portrait.svg",
"No Photo Available.svg",
"No portrait (female).svg",
"No portrait (male).svg",
"No portrait-BFD-test.svg",
"No Screenshot.svg",
"No-image-available.jpg",
"Nocover-upload.png",
"NoDVDcover copy.png",
"Noimage.gif",
"Noribbon.svg",
"Null.png",
"PictureNeeded.gif",
"Place holder.jpg",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Red - Replace this image female.svg",
"Red - Replace this image male.svg",
"Replace this image.svg",
"Replace this image - temple.png",
"Replace this image butterfly.png",
"Replace this image female.svg",
"Replace this image female (blue).svg",
"Replace this image male.svg",
"Replace this image male (blue).svg",
"Replace this image1.svg",
"Resolution angle.png",
"Silver - Replace this image female.svg",
"Silver - Replace this image male.svg",
"Sin bandera.svg",
"Sin escudo.svg",
"Unbenannt.JPG",
"UploadACopyrightFreeImage.svg",
"UploadAnImage.gif",
"UploadAnImage.svg",
"UploadAnImageShort.svg",
}
local function 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 _, 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 _, j in pairs(placeholder_image) do
if image == j then
return true
end
end
return false
end
--- 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.
--- @param args table
function i._InfoboxImage(args)
local image = args.image
if image == "" or image == nil then
return ""
end
if image == " " then
return image
end
if args.suppressplaceholder ~= "no" and IsPlaceholder(image) == true then
return "";
end
if string.find(image, "^%[*http") then
-- Error category.
return "[[Category:Pages using infoboxes with url links]]"
end
if mw.ustring.sub(image, 1, 2) == "[[" then
-- Search for thumbnail images and add to tracking cat if found.
local cat = ""
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
cat = "[[Category:Pages using infoboxes with thumbnail images]]"
end
return image .. cat
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 beginning, so pass don't process at all.
return image
elseif mw.ustring.sub(image, 4, 9) == "`UNIQ-" then
-- Found strip marker at beginning, so pass don't process at all.
return image
end
-- 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 _, 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
local size = args.size
local maxSize = args.maxsize
local sizeDefault = args.sizedefault
if maxSize and maxSize ~= "" then
-- If no sizeDefault then set to maxsize.
if not sizeDefault or sizeDefault == "" then
sizeDefault = maxSize
end
-- Check to see if size is bigger than maxsize.
if size and size ~= "" 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
local result = "[[File:" .. image
if args.page and args.page ~= "" then
result = result .. "|page=" .. args.page
end
if size and size ~= "" then
result = result .. "|" .. size
elseif sizeDefault and sizeDefault ~= "" then
result = result .. "|" .. sizeDefault
else
result = result .. "|frameless"
end
if args.center == "yes" then
result = result .. "|center"
end
local alt = args.alt
if alt == "none" then
result = result .. "|alt="
elseif alt and alt ~= "" then
result = result .. "|alt=" .. alt
end
if args.link == "none" then
result = result .. "|link="
elseif args.link and args.link ~= "" then
result = result .. "|link=" .. args.link
end
if args.border == "yes" then
result = result .. "|border"
end
if args.upright == "yes" then
result = result .. "|upright"
elseif args.upright and args.upright ~= "" then
result = result .. "|upright=" .. args.upright
end
if args.thumbtime and args.thumbtime ~= "" then
result = result .. "|thumbtime=" .. args.thumbtime
end
-- If alt value is a keyword then do not use as a description.
if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or alt == "none" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then
alt = nil
end
local title = args.title
if title and title ~= "" then
-- Does title param contain any templatestyles? If yes then set to blank.
if mw.ustring.match(mw.getCurrentFrame():preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
title = nil
end
end
if title and title ~= "" then
result = result .. "|" .. title
elseif alt and alt ~= "" then
result = result .. "|" .. alt
end
result = result .. "]]"
return result
end
function i.InfoboxImage(frame)
return i._InfoboxImage(require('Module:Arguments').getArgs(frame))
end
return i