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 6: | Line 6: | ||
string.gsub(instr, pattern, function(c) fields[#fields+1] = c end) | string.gsub(instr, pattern, function(c) fields[#fields+1] = c end) | ||
return fields | return fields | ||
+ | end | ||
+ | |||
+ | function trim(s) | ||
+ | return (s:gsub("^%s*(.-)%s*$", "%1")) | ||
end | end | ||
Line 15: | Line 19: | ||
for key,entry in pairs(split(list,sep)) do | for key,entry in pairs(split(list,sep)) do | ||
− | result = result .. string.gsub(pattern, '%%pattern%%',entry) | + | result = result .. string.gsub(pattern, '%%pattern%%', trim(entry)) |
end | end | ||
Revision as of 15:01, 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 .. string.gsub(pattern, '%%pattern%%', trim(entry)) end return result end return p