Module:Enumerate
From Kenshi Wiki
More actions
Usage
This module is meant to be invoked inside of a template, since it requires the argument list of the calling template.
This module allows the enumeration of a set of parameters with a given prefix. If the prefix was notes, the parameters notes1, notes2, notes3, and so on will be enumerated in a unordered list until it sees the first null parameter.
The prefix is defined by the first argument passed into the invocation.
| Template:X35 | 
|---|
{{#invoke:Enumerate|main|notes}}
 | 
| Any page | 
{{X35
| notes1 = Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
| notes2 = Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
| notes3 = Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
| notes4 = Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
}}
 | 
| Output | 
  | 
The entries will cut off in the event that the parameters are out of order.
| Template:X35 | 
|---|
{{#invoke:Enumerate|main|notes}}
 | 
| Any page | 
{{X35
| notes1 = Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
| notes2 = Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
| notes3 = 
| notes4 = Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
}}
 | 
| Output | 
  | 
Do note that {{X35}} is sandbox template and does not actually call this module.
Parameters
|1=(or|prefix=) - The parameter prefix to enumerate over. Can be left blank.|2=(or|suffix=) - The parameter suffix to enumerate over. Can be left blank.|ordered=yes- Set to a yes, true, etc. to output a ordered list(<ol>) rather than a unorder list (<ul>)
|pre=- Text to prefix each list item with.|post=- Text to suffix each list item with.
Examples uses
See also
-- 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