Module:Labelled list hatnote: Difference between revisions

Created page with "-------------------------------------------------------------------------------- -- Labelled list -- -- -- -- This module does the core work of creating a hatnote composed of a list -- -- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]", -- -- for {{see also}} and similar templates...."
 
No edit summary
 
Line 86: Line 86:
}
}
return p._labelledList(pages, labels, options)
return p._labelledList(pages, labels, options)
end
local function exists(title)
local success, result = pcall(function() return title.exists end)
if success then
return result
else
return true
end
end
end


function p._labelledList (pages, labels, options)
function p._labelledList (pages, labels, options)
local removednonexist = false
if options.ifexists then
if options.ifexists then
for k = #pages, 1, -1 do --iterate backwards to allow smooth removals
for k = #pages, 1, -1 do --iterate backwards to allow smooth removals
local v = pages[k]
local v = pages[k]
local title = mw.title.new(getTarget(v), namespace)
if mw.ustring.sub(mw.text.trim(v), 1, 1) ~= "#" then
if (v == '') or title == nil or not title.exists then
local title = mw.title.new(getTarget(v), namespace)
table.remove(pages, k)
if (v == '') or (title == nil) or not exists(title) then
table.remove(pages, k)
removednonexist = true
end
end
end
end
end
Line 111: Line 123:
end
end
if #pages == 0 then
if #pages == 0 then
if options.ifexists then
if removednonexist then
mw.addWarning(
mw.addWarning(
string.format(
string.format(