Content deleted Content added
add puzzle piece tracking |
Reapply fixed version |
||
(11 intermediate revisions by 4 users not shown) | |||
Line 108:
end
s = mw.ustring.lower(s)
image = mw.ustring.gsub(image,'^File:','') --- strip mistaken leading File: or Image:
image = mw.ustring.gsub(image,'^Image:','')
return image
local success, exists = pcall(function() return title.exists end)
-- If success = false, then we're out of expensive parser function calls and can't check whether it exists
-- in that case, don't throw a Lua error
return not success or exists
end
Line 154 ⟶ 164:
local portalTitle = mw.title.new(portal,"Portal")
-- if portal exists, put it into list
if portalTitle and
table.insert(existingPortals,portal)
-- otherwise set tracking cat
Line 195 ⟶ 205:
end
return root
local function noviewer(portalImage)
-- Function to add noviewer class to filespec for portalImage
local portalImage, hasClass = mw.ustring.gsub(portalImage, "class%s*=[^%|]+", "%0 noviewer")
if hasClass == 0 then
portalImage = portalImage.."|class=noviewer"
end
return portalImage
end
Line 237 ⟶ 256:
local contents = {}
-- Display the portals specified in the positional arguments.
local defaultUsed =
for _, portal in ipairs(portals) do
local portalImage = getImageName(portal)
if portalImage == defaultImage then
defaultUsed =
else
portalImage = noviewer(portalImage)
end
local image = string.format('[[File:%s|32x28px
portalImage)
local link = string.format('[[Portal:%s|%s%sportal]]',
Line 249 ⟶ 270:
table.insert(contents, {image, link})
end
if defaultUsed and args.tracking and checkTracking() then
defaultUsed)
root:wikitext(cat)
end
return tostring(fillBox(root, contents))
Line 266 ⟶ 289:
-- Display the portals specified in the positional arguments.
for _, fn in ipairs(imageList) do
local image = string.format('[[File:%s|32x28px
local link = string.format('[[:File:%s|%s]]',fn,fn)
table.insert(contents,{image,link})
Line 274 ⟶ 297:
end
function p._image(portal,
-- Wrapper function to allow getImageName() to be accessed through #invoke.
-- backward compatibility: if table passed, take first element
Line 281 ⟶ 304:
end
local name = getImageName(portal)
-- If
-- also, add "noviewer" class to metadata
local
if keepargs then
return noviewer(name)
end
-- otherwise, just keep filename, plus optional category
local args = mw.text.split(name, "|", true)
local result = {args[1]} -- the filename always comes first
-- parse name, looking for category arguments
for i = 2,#args do
local m = mw.ustring.match(args[i], "^%s*category%s*=")
if m then
table.insert(result, args[i])
end
end
-- reassemble arguments
return table.concat(result,"|")
end
▲local function getAllImageTables()
local function getAllImageTable()
-- Returns an array containing all image subpages (minus aliases) as loaded by mw.loadData.
local images = {}
for i, subpage in ipairs{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'other'} do
for portal, image in pairs(imageTable) do▼
local args = mw.text.split(image,"|")
images[portal] = args[1] -- just use image filename
end
end
return images
Line 300 ⟶ 344:
-- names are capitalized, so the portal links may be broken.
local lang = mw.language.getContentLanguage()
portals = portals or {}
▲ local count = 1
for
▲ portals[count] = lang:ucfirst(portal)
▲ end
end
table.sort(portals)
args.redlinks = args.redlinks or "yes"
return p._portal(portals, args)
end
Line 315 ⟶ 358:
-- should be moved to a portal alias for ease of maintenance.
local exists, dupes = {}, {}
for
▲ for portal, image in pairs(imageTable) do
▲ exists[image] = portal
▲ else
▲ table.insert(dupes, string.format('The image "[[:File:%s|%s]]" is used for both portals "%s" and "%s".', image, image, exists[image], portal))
▲ end
end
end
|