Module:MultiReplace
- Afrikaans
- Алтай тил
- Anarâškielâ
- العربية
- অসমীয়া
- Авар
- Azərbaycanca
- تۆرکجه
- Basa Bali
- বাংলা
- 閩南語 / Bân-lâm-gú
- Башҡортса
- Беларуская
- Беларуская (тарашкевіца)
- भोजपुरी
- Bikol Central
- Bosanski
- Буряад
- Cymraeg
- الدارجة
- Ελληνικά
- Eʋegbe
- فارسی
- Français
- Frysk
- Fulfulde
- ГӀалгӀай
- ગુજરાતી
- गोंयची कोंकणी / Gõychi Konknni
- 客家語 / Hak-kâ-ngî
- 한국어
- Hausa
- Հայերեն
- Hrvatski
- Ilokano
- Bahasa Indonesia
- Interlingua
- Ирон
- Íslenska
- Jawa
- ქართული
- कॉशुर / کٲشُر
- Ikinyarwanda
- Kurdî
- Latviešu
- Lietuvių
- मैथिली
- Македонски
- മലയാളം
- Māori
- ဘာသာမန်
- Bahasa Melayu
- 閩東語 / Mìng-dĕ̤ng-ngṳ̄
- Мокшень
- Монгол
- မြန်မာဘာသာ
- Nederlands
- नेपाली
- 日本語
- Нохчийн
- Norsk bokmål
- Oʻzbekcha / ўзбекча
- ਪੰਜਾਬੀ
- Português
- Qaraqalpaqsha
- Română
- Русский
- Scots
- Shqip
- සිංහල
- Simple English
- SiSwati
- Slovenčina
- Slovenščina
- کوردی
- Српски / srpski
- Srpskohrvatski / српскохрватски
- Svenska
- Tagalog
- தமிழ்
- တႆး
- ไทย
- Тоҷикӣ
- ತುಳು
- Türkçe
- Українська
- اردو
- Vèneto
- Tiếng Việt
- 吴语
- 粵語
- 中文
Appearance
From Wikipedia, the free encyclopedia
Warning This Lua module is used on approximately 1,360,000 pages, or roughly 2% of all pages .
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them.
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them.
This module depends on the following other modules:
For a function to search for multiple patterns, see {{#invoke:string2|matchAny}}. For a function to replace multiple parameters at once, see {{#invoke:params|mapping_by_replacing}}.
Replaces matches of multiple patterns in a given string with given replacements. For each replacement instance, the pattern matching at the lowest position is chosen. If there are multiple such patterns, then the one specified earliest in the pattern list is chosen.
Usage
{{#invoke:MultiReplace|main|input|plain=yes (optional)|pattern1| replacement1|pattern2|replacement2... }}
If plain=yes
is specified, then the patterns and replacements are treated as plain text, otherwise as Lua Unicode patterns.
An equals sign in a pattern will trigger an Unpaired argument error. Use {{=}}
, which expands to an equals sign that will not be interpreted.
The above documentation is transcluded from Module:MultiReplace/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Subpages of this module.
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Subpages of this module.
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