Modul:Labelled list hatnote: Unterschied zwischen den Versionen

K
11 Versionen von wpen:Module:Labelled_list_hatnote importiert
(Updated from sandbox; integrates ifexists feature)
K (11 Versionen von wpen:Module:Labelled_list_hatnote importiert)
 
(3 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 35: Zeile 35:
-- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1'
-- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1'
prefixes = prefixes or defaults.prefixes
prefixes = prefixes or defaults.prefixes
local pages = {}
local indices = {}
local sparsePages = {}
for k, v in pairs(args) do
for k, v in pairs(args) do
if type(k) == 'number' then
if type(k) == 'number' then
indices[#indices + 1] = k
local display
local display
for i = 1, #prefixes do
for i = 1, #prefixes do
Zeile 43: Zeile 45:
if display then break end
if display then break end
end
end
local page = display and
sparsePages[k] = display and
string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v
string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v
pages[#pages + 1] = page
end
end
end
end
table.sort(indices)
local pages = {}
for k, v in ipairs(indices) do pages[#pages + 1] = sparsePages[v] end
return pages
return pages
end
end
Zeile 85: Zeile 89:


function p._labelledList (pages, labels, options)
function p._labelledList (pages, labels, options)
local offset = 0
if options.ifexists then
if options.ifexists then
for k, v in pairs(pages) do
for k = #pages, 1, -1 do --iterate backwards to allow smooth removals
local v = pages[k]
local title = mw.title.new(getTarget(v), namespace)
local title = mw.title.new(getTarget(v), namespace)
if (v == '') or title == nil or not title.exists then
if (v == '') or title == nil or not title.exists then
table.remove(pages, k + offset)
table.remove(pages, k)
offset = offset - 1
end
end
end
end