Permanently protected module
From Wikipedia, the free encyclopedia


local p = {}



local function MultiReplace(args)

	local input = args1 or "{{{1}}}"

	local plain = args.plain == "yes"



	local i = 1

	local changeList = {}

	while argsi * 2 do

		local change = {pattern = argsi * 2], repl = argsi * 2 + 1]}

		if not change.repl then

			return require('Module:Error').error{

				'MultiReplace: Unpaired argument: <code>' .. (i * 2) .. ' = ' .. mw.text.nowiki(change.pattern) .. '</code>'

			}

		end

		changeListi = change

		i = i + 1

	end

	

	local matchList = {}

	local pos = 1

	local len = mw.ustring.len(input)

	local result = ""

	while pos <= len do

		local bestStart = len + 1

		local bestStop = len

		local bestChange

		for _, change in ipairs(changeList) do

			local start, stop = mw.ustring.find(input, change.pattern, pos, plain)

			if start and (start < bestStart) then

				bestStart = start

				bestStop = stop

				bestChange = change

			end

		end

		result = result .. mw.ustring.sub(input, pos, bestStart - 1)

		if bestChange then

			local fragment = mw.ustring.sub(input, bestStart, bestStop)

			result = result .. (plain and bestChange.repl or

				mw.ustring.gsub(fragment, bestChange.pattern, bestChange.repl, 1))

		end

		pos = bestStop + 1

	end

	return result

end



function p.main(frame, ...)

	local args =

		type(frame) ~= 'table' and {frame, ...} or

		type(frame.args) ~= 'table' and frame or

		frame.args1 and frame.args or

		frame:getParent().args

	return MultiReplace(args)

end



return p
Permanently protected module
From Wikipedia, the free encyclopedia


local p = {}



local function MultiReplace(args)

	local input = args1 or "{{{1}}}"

	local plain = args.plain == "yes"



	local i = 1

	local changeList = {}

	while argsi * 2 do

		local change = {pattern = argsi * 2], repl = argsi * 2 + 1]}

		if not change.repl then

			return require('Module:Error').error{

				'MultiReplace: Unpaired argument: <code>' .. (i * 2) .. ' = ' .. mw.text.nowiki(change.pattern) .. '</code>'

			}

		end

		changeListi = change

		i = i + 1

	end

	

	local matchList = {}

	local pos = 1

	local len = mw.ustring.len(input)

	local result = ""

	while pos <= len do

		local bestStart = len + 1

		local bestStop = len

		local bestChange

		for _, change in ipairs(changeList) do

			local start, stop = mw.ustring.find(input, change.pattern, pos, plain)

			if start and (start < bestStart) then

				bestStart = start

				bestStop = stop

				bestChange = change

			end

		end

		result = result .. mw.ustring.sub(input, pos, bestStart - 1)

		if bestChange then

			local fragment = mw.ustring.sub(input, bestStart, bestStop)

			result = result .. (plain and bestChange.repl or

				mw.ustring.gsub(fragment, bestChange.pattern, bestChange.repl, 1))

		end

		pos = bestStop + 1

	end

	return result

end



function p.main(frame, ...)

	local args =

		type(frame) ~= 'table' and {frame, ...} or

		type(frame.args) ~= 'table' and frame or

		frame.args1 and frame.args or

		frame:getParent().args

	return MultiReplace(args)

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook