This module was built to support the {{AbilityList}} template.
local abilityListModule = {}
-- remove leading/trailing whitespace, ignore empty or newline-only values
local function cleanValue(value)
if not value then return nil end
value = mw.text.trim(value)
if value == "" then
return nil
end
return value
end
local function collectAbilityEntries(argumentTable)
local abilityEntries = {}
for index = 1, 50 do
local cleanedValue = cleanValue(argumentTable[index])
if cleanedValue then
table.insert(abilityEntries, cleanedValue)
end
end
return abilityEntries
end
-- Builds the separator exactly like the original {{AbilityList}} template
local function buildSeparatorString(isDesktop)
if isDesktop then
return "⁠, "
else
return ""
end
end
local function renderAbilityList(abilityEntries, separatorString)
if #abilityEntries > 0 then
return table.concat(abilityEntries, separatorString)
else
return "Unknown."
end
end
local function wrapWithDiv(renderedContent)
return '<div class="ability_list">' .. renderedContent .. '</div>'
end
function abilityListModule.render(frame)
local abilityEntries = collectAbilityEntries(frame:getParent().args)
local isDesktop = frame.args.isDesktop and mw.text.trim(frame.args.isDesktop) ~= ""
local separatorString = buildSeparatorString(isDesktop)
local renderedList = renderAbilityList(abilityEntries, separatorString)
return wrapWithDiv(renderedList)
end
return abilityListModule