Difference between revisions of "Module:ApplyPattern"
Jump to navigation
Jump to search
m (Takes a comma delimited list, splits and trims the entries, and passes it into the pattern input, replacing all instances of %%pattern%%) |
|||
| Line 15: | Line 15: | ||
local list = frame.args[1] | local list = frame.args[1] | ||
local pattern = frame.args[2] | local pattern = frame.args[2] | ||
| − | local result = | + | local result = {} |
local sep = ',' | local sep = ',' | ||
for key,entry in pairs(split(list,sep)) do | for key,entry in pairs(split(list,sep)) do | ||
| − | result = | + | result[#result+1] = string.gsub(pattern, '%%pattern%%', trim(entry)) |
end | end | ||
| − | return result | + | return result.concat(table,"") |
end | end | ||
return p | return p | ||
Revision as of 15:09, 17 August 2019
Custom module to apply either some wiki markup or a template to each item in a comma delimited list. Look at Template:Class for examples.
local p = {}
function split(instr,sep)
local sep, fields = sep or ":", {}
local pattern = string.format("([^%s]+)", sep)
string.gsub(instr, pattern, function(c) fields[#fields+1] = c end)
return fields
end
function trim(s)
return (s:gsub("^%s*(.-)%s*$", "%1"))
end
function p.apply(frame)
local list = frame.args[1]
local pattern = frame.args[2]
local result = {}
local sep = ','
for key,entry in pairs(split(list,sep)) do
result[#result+1] = string.gsub(pattern, '%%pattern%%', trim(entry))
end
return result.concat(table,"")
end
return p