Module:ifmatch

local export = {}

-- index_limit: parameters larger than this can't be specified as numbered -- parameters. This is so that invocations of like the following work: -- function export._getParameters(frame_args, arg_list, index_limit) local new_args = {}; local index = 1; local value; for _, arg in ipairs(arg_list) do		value = frame_args[arg] if value == nil and index <= index_limit then value = frame_args[index]; index = index + 1; end new_args[arg] = value; end return new_args; end

function export.ifmatch_helper(frame) local new_args = export._getParameters(		frame:getParent.args,		{'s', 'pattern', 'start', 'plain', 'unicode'},		2	) local s = assert(new_args.s)	local pattern = assert(new_args.pattern) local start = new_args.start and math.floor(assert(tonumber(newargs.start), "start should be a number")) or 1 local yesno = require('Module:yesno') local plain = yesno(new_args.plain) local unicode = new_args.unicode if unicode then unicode = yesno(unicode) else unicode = true end -- If plain is true, mw.ustring.find behaves like string.find and there is -- no point in potentially slowing down matching by using mw.ustring.find. if plain then unicode = false end local find = unicode and mw.ustring.find or string.find return find(s, pattern, start, plain) and '1' or '' end

return export