Editing
Module:MultiReplace
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local 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: <code>' .. (i * 2) .. ' = ' .. mw.text.nowiki(change.pattern) .. '</code>' } 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
Summary:
By saving changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:MultiReplace/doc
(
edit
)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Module
Discussion
English
Views
Read
Edit source
View history
More
Search
Navigation
Main page
Community portal
Current events
Recent changes
Random page
Help
Donate
Tools
What links here
Related changes
Upload file
Special pages
Page information