See Template:Fe.
-- taken from https://www.mediawiki.org/wiki/Module:Foreach local p = {} function p.w(frame) -- called from Template:Fe local pframe = frame:getParent() local tplname = pframe.args[1] local delim = pframe.args[2] r = '' for n,v in pframe:argumentPairs() do if n > 3 then r = r .. delim end if n>2 then r = r .. frame:expandTemplate{title = tplname, args = {v}} end end return r end function p.m(t,frame) -- to be called from a module -- at the top: p={foreach = require "Module:foreach"} -- example: p.foreach.m({tplname,', ',item1,item3,item3},frame) r = '' tplname=t[1] delim=t[2] for n,v in ipairs(t) do if n > 3 then r = r .. delim end if n>2 then r = r .. frame:expandTemplate{title = tplname, args = {v}} end end return r end return p