Jump to content

Module:Regex

From Wikipedia, the free encyclopedia
local p = {}
local getArgs = require('Module:Arguments').getArgs

--args: 1 - page to search, 2 - match pattern

local function allcases(s)
	return s:gsub('([%?%^%$%(%)%%%.%[%]%*%+%-])', '%%%1')
		:gsub('%a', function(letter) return '['..letter:upper()..letter:lower()..']' end)
		:gsub('%[([^%[%]]+)%]', '%1')
end

function p._match(args)
	local page = mw.title.new(args["1"])
	if not page then
		--bad title
		return ""
	end
	local redirectTarget = page.redirectTarget
	if redirectTarget then page = mw.title.new(redirectTarget.prefixedText) end
	local content = page:getContent()
	if not content then
		--page does not exist
		return ""
	end
	local pattern = args["2"] or ""
	return mw.ustring.match(content, pattern)
end

function p.match(frame)
	local args = getArgs(frame)
	return p._match(args)
end

return p