Module:Enumerate
Appearance
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
Usage
[change source]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 |
Module:Enumerate/doc/demo |
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 |
Module:Enumerate/doc/demo |
Do note that {{X35}} is sandbox template and does not actually call this module.
Examples
[change source]See also
[change source]
-- 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