local p = {}
local function formatList(items)
local count = #items
if count == 0 then
return "" -- returns nothing if empty
elseif count == 1 then
return items[1] -- just return the string input if alone
elseif count == 2 then
return items[1] .. " and " .. items[2] -- returns "string1, string2, ... and last_string"
else
local last = table.remove(items)
return table.concat(items, ", ") .. " and " .. last
end
end
function p.main(frame)
local args = frame:getParent().args
local items = {}
for _, value in pairs(args) do
if value ~= '' then
table.insert(items, value)
end
end
return formatList(items)
end
function p.link(frame)
local args = frame:getParent().args
local items = {}
for _, value in pairs(args) do
if value ~= '' then
local title = mw.title.new(value) -- creates object for page
if title and title.exists then -- checks if page exists
table.insert(items, "[[" .. value .. "]]") -- adds to the item table with wikilink format
else
table.insert(items, value) -- page doesn't exist, adds to the item table without the wikilink format
end
end
end
return formatList(items)
end
return p