Module:Labelled list hatnote: Difference between revisions

m
1 revision imported
(Fixed iteration-and-removal bug)
 
m (1 revision imported)
 
(2 intermediate revisions by 2 users not shown)
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(