Մոդուլ:InfoboxImage
Արտաքին տեսք
Documentation for this module may be created at Մոդուլ:InfoboxImage/doc
-- Մուտքեր.
-- image - Կրնայ ըլլալ պարզ ֆայլի անուն մը (File:/Image: նախածանցով կամ առանց անոր)
-- կամ ամբողջութեամբ ձեւաւորուած պատկերի յղում մը
-- page - Բազմէջ պատկերներու (DjVu) պարագային ցուցադրուելիք էջը
-- size - Պատկերին ցուցադրման չափը
-- maxsize - Պատկերին առաւելագոյն չափը
-- sizedefault - Պատկերին ցուցադրման լռելեայն չափը, երբ size պարամեթրը դատարկ է
-- alt - Պատկերին այլընտրանքային բնագիրը
-- title - Պատկերին վերնագրի բնագիրը
-- 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
-- class - HTML classes to add to the image
-- Outputs:
-- Formatted image.
-- More details available at the "Module:InfoboxImage/doc" page
local i = {}
-- Փոխարինող պատկերներու ցանկը եւ հետագծման կատեգորիաները պահուած են [[Module:InfoboxImage/data]]-ի մէջ։
-- Այլ հաստատուններ.
-- համակարգի մակարդակով սահմանուած մանրապատկերի լռելեայն չափը (px)
local defaultThumbnailSize = 250
-- Եթէ էջը օգտատիրոջ էջ մը չէ, վերադարձնել հետագծման կատեգորիան։ Հակառակ պարագային՝ դատարկ բան վերադարձնել։
local function trackingCat(cat)
local ns = mw.title.getCurrentTitle().nsText:lower()
local categories = mw.loadData('Module:InfoboxImage/data').categories
return (ns ~= 'user' and ns ~= 'user talk' and categories[cat]) or ""
end
-- Որոշել՝ պատկերը փոխարինող պատկեր մըն է, թէ ոչ։
function i.IsPlaceholder(image)
-- ընդգծումները փոխարինել բացատներով
image = mw.ustring.gsub(image, "*", " ");
assert(image ~= nil, 'mw.ustring.gsub(image, "*", " ") must not return nil')
-- եթէ պատկերը կը սկսի [[-ով, հեռացնել զայն եւ |-էն ետք եղած ամբողջը
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
-- Հեռացնել բացատները
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
-- Հեռացնել նախածանցը, եթէ գոյութիւն ունի
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
-- Հեռացնել բացատները
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
-- Առաջին տառը դարձնել մեծատառ
image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
local placeholder_image = mw.loadData('Module:InfoboxImage/data').placeholder_image
return placeholder_image[image]
end
local function isempty(x)
return (not x) or x == ""
end
-- Հիմնական մուտքի կէտը
function i.InfoboxImage(frame)
local image = frame.args["image"];
if isempty(image) 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 string.find(image, "^%[*https?:") then
-- Սխալի կատեգորիա։
return trackingCat("url_image_links")
end
if mw.ustring.sub(image,1,2) == "[[" then
-- Փնտռել մանրապատկերային պատկերներ եւ գտնելու պարագային զանոնք աւելցնել հետագծման կատեգորիային
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 = trackingCat("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,8) == mw.ustring.char(127).."'\"`UNIQ" then
-- Սկիզբին strip marker մը գտնուած է, հետեւաբար ոչ մէկ մշակում կատարել
return image;
else
local result = "";
local page = frame.args["page"];
local upright = frame.args["upright"] or ""
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 thumbtime = frame.args["thumbtime"] or "";
local center = frame.args["center"];
local class = frame.args["class"];
-- Հեռացնել նախածանցը, եթէ գոյութիւն ունի
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 not isempty(maxsize) then
-- Եթէ sizedefault կամ upright չկայ, maxsize-ը սահմանել որպէս sizedefault
if isempty(sizedefault) and isempty(upright) then
sizedefault = maxsize
end
-- Ստուգել՝ չափը մեծ է maxsize-էն, թէ ոչ
local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
if not isempty(size) then
local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
if sizenumber > maxsizenumber and maxsizenumber > 0 then
size = maxsize;
end
end
-- Ստուգել՝ upright-ը մեծ է maxsize-էն, թէ ոչ (լռելեայն նախընտրուած չափին պարագային)
if not isempty(upright) then
local uprightnumber = tonumber(upright) or (upright == "yes" and 0.75) or 0
if uprightnumber*defaultThumbnailSize > maxsizenumber and maxsizenumber > 0 then
upright = tostring(maxsizenumber/defaultThumbnailSize)
end
end
end
-- Չափին աւելցնել px, եթէ միայն թիւ մըն է
if (tonumber(size) or 0) > 0 then
size = size .. "px";
end
-- sizedefault-ին աւելցնել px, եթէ միայն թիւ մըն է
if (tonumber(sizedefault) or 0) > 0 then
sizedefault = sizedefault .. "px";
end
result = "[[File:" .. image;
if not isempty(page) then
result = result .. "|page=" .. page;
end
if not isempty(size) then
result = result .. "|" .. size;
elseif not isempty(sizedefault) and isempty(upright) then
result = result .. "|" .. sizedefault;
else
result = result .. "|frameless";
end
if center == "yes" then
result = result .. "|center"
end
if not isempty(alt) then
result = result .. "|alt=" .. alt;
end
if not isempty(link) 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 not isempty(class) then
result = result .. "|class=" .. class;
end
-- Եթէ alt-ի արժէքը բանալի բառ մըն է, զայն չգործածել որպէս նկարագրութիւն
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 mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then
alt = nil;
end
if not isempty(title) then
-- title պարամեթրը templatestyles կը պարունակէ՞։ Եթէ այո, զայն դատարկ դարձնել։
if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
title = nil;
end
end
if not isempty(title) then
result = result .. "|" .. title;
end
result = result .. "]]";
return result;
end
end
return i;