Module:MultiReplace: Difference between revisions

Content deleted Content added
No edit summary
Per edit request
 
(22 intermediate revisions by 3 users not shown)
Line 1:
local p = {}
 
local function p.mainMultiReplace(frameargs)
local args = frame:getParent().args
local input = args[1] or "{{{1}}}"
local plain = args.plain == "yes"
Line 11 ⟶ 10:
local change = {pattern = args[i * 2], repl = args[i * 2 + 1]}
if not change.repl then
return framerequire('Module:expandTemplateError').error{
args = { 'MultireplaceMultiReplace: Unpaired argument: <code>' .. (i * 2 - 1) .. ' = ' .. mw.text.nowiki(change.replpattern) .. '</code>' }
title = 'Error',
args = { 'Multireplace: Unpaired argument: <code>' .. (i * 2 - 1) .. ' = ' .. change.repl .. '</code>' }
}
end
changeList[i] = change
i = i + 1
end
Line 29 ⟶ 28:
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
Line 36 ⟶ 35:
end
result = result .. mw.ustring.sub(input, pos, bestStart - 1)
if bestchangebestChange then
local fragment = mw.ustring.sub(input, bestStart, bestStop)
result = result .. (plain and changebestChange.repl or
mw.ustring.gsub(fragment, changebestChange.pattern, changebestChange.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.args[1] and frame.args or
local args = frame:getParent().args
return MultiReplace(args)
end