local module = {} local getArgs = require('Module:Arguments').getArgs function module._main(args, frame) local str = args['str'] or '' local ptn = args['ptn'] or '' ptn = mw.text.decode(mw.text.unstripNoWiki(ptn)) local name = args['name'] or 'foo' if args['reg'] ~= 'on' then ptn = mw.ustring.gsub(ptn, '([%%%(%)%.%+%-%*%?%[%]%^%$])', '%%%1') end local datas = mw.text.split(str, ptn) for i, v in ipairs(datas) do v = mw.ustring.gsub(v, '^%s*(.+)%s*$', '%1') frame:callParserFunction( '#vardefine', name..i, v) end frame:callParserFunction( '#vardefine', name..'.count', #datas) end function module.main(frame) local args = getArgs(frame) return module._main(args, frame) end return module