请输入您要查询的百科知识:

 

词条 Module:MultiReplace
释义

p = {}

local function MultiReplace(args)

local input = args[1] or "{{{1}}}"

local plain = args.plain == "yes"

local i = 1

local changeList = {}

while args[i * 2] do

local change = {pattern = args[i * 2], repl = args[i * 2 + 1]}

if not change.repl then

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

'MultiReplace: Unpaired argument: ' .. (i * 2) .. ' = ' .. change.pattern .. ''

}

end

changeList[i] = 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.args[1] and frame.args or

frame:getParent().args

return MultiReplace(args)

end

return p

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/22 22:26:31