Module:Enumerate

-- 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