Module:Enumerate
Documentation for this module may be created at Module:Enumerate/doc
-- Enumerates a given parameter set from the invoking template as a bullet list.
local getArgs = require('Module:Arguments').getArgs
local yesno = require("Module:Yesno")
local p = {}
function p.main(frame)
local args = getArgs(frame, {
frameOnly = true,
trim = true
})
return p._main(frame, args)
end
function startswith(target, prefix)
return mw.ustring.sub(target, 1, mw.ustring.len(prefix)) == prefix
end
function endswith(target, suffix)
return mw.ustring.sub(target, -mw.ustring.len(suffix), -1) == suffix
end
function p._main(frame, args)
local prefix = args[1] or args["prefix"] or ""
local suffix = args[2] or args["suffix"] or ""
local parentArgs = frame:getParent() and getArgs(frame:getParent(), {
trim = true
}) or args
local finalOutput = ""
local list = mw.html.create(yesno(args["ordered"]) and "ol" or "ul")
local current = 1
local searching = true
while searching do
local arg = (prefix == "" and suffix == "")
and current
or prefix .. tostring(current) .. suffix
if parentArgs[arg] then
list:node(
mw.html.create("li")
:wikitext((args["pre"] or "") .. parentArgs[arg] .. (args["post"] or ""))
)
current = current + 1
else
searching = false
end
end
return current == 1 and "" or tostring(list)
end
return p