Модуль:Loc/Marking: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 79: | Строка 79: | ||
return params | return params | ||
end | |||
local function strip_nowiki_and_unescape(s) | |||
if not s then return s end | |||
s = mw.ustring.gsub(s, '<nowiki>', '') | |||
s = mw.ustring.gsub(s, '</nowiki>', '') | |||
s = mw.ustring.gsub(s, '<nowiki>', '') | |||
s = mw.ustring.gsub(s, '</nowiki>', '') | |||
s = mw.ustring.gsub(s, '<nowiki>', '') | |||
s = mw.ustring.gsub(s, '</nowiki>', '') | |||
s = mw.ustring.gsub(s, '{{=}}', '=') | |||
s = mw.ustring.gsub(s, '{{=}}', '=') | |||
s = mw.ustring.gsub(s, '{{=}}', '=') | |||
s = mw.ustring.gsub(s, '{{=}}', '=') | |||
s = mw.ustring.gsub(s, '&', '&') | |||
return s | |||
end | end | ||
local function transform(s) | local function transform(s) | ||
s = s or "" | s = s or "" | ||
s = strip_nowiki_and_unescape(s) | |||
while true do | while true do | ||
local c_s, c_e, c_tag = mw.ustring.find(s, "%[/([%w_]+)%]") | local c_s, c_e, c_tag = mw.ustring.find(s, "%[/([%w_]+)%]") | ||
| Строка 100: | Строка 119: | ||
else | else | ||
local inner = mw.ustring.sub(s, last_o_e + 1, c_s - 1) | local inner = mw.ustring.sub(s, last_o_e + 1, c_s - 1) | ||
inner = strip_nowiki_and_unescape(inner) | |||
local _, _, raw_attrs = mw.ustring.find(s, "%[" .. c_tag .. "([^%]]*)%]", last_o_s) | local _, _, raw_attrs = mw.ustring.find(s, "%[" .. c_tag .. "([^%]]*)%]", last_o_s) | ||
raw_attrs = strip_nowiki_and_unescape(raw_attrs) | |||
local params = parse_attrs(raw_attrs) | local params = parse_attrs(raw_attrs) | ||
local replacement = apply_tag(c_tag, params, inner) | local replacement = apply_tag(c_tag, params, inner) | ||
| Строка 116: | Строка 138: | ||
local args = frame.args or {} | local args = frame.args or {} | ||
local text = args[1] or args.text or "" | local text = args[1] or args.text or "" | ||
text = strip_nowiki_and_unescape(text) | |||
return transform(text) | return transform(text) | ||
end | end | ||
return p | return p | ||