8,748
edits
(Fixed iteration-and-removal bug) |
Nazarzadeh (talk | contribs) 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 | ||
local title = mw.title.new(getTarget(v), namespace) | |||
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 | if removednonexist then | ||
mw.addWarning( | mw.addWarning( | ||
string.format( | string.format( |