Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Enumerate

From Wikipedia, the free encyclopedia

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