Модуль:SP7Tags
Для документации этого модуля может быть создана страница Модуль:SP7Tags/doc
local p = {}
local function split_tags(s)
if not s or s == "" then return {} end
s = mw.ustring.gsub(s, "[;\n\r]+", ",")
local out = {}
for part in mw.ustring.gmatch(s, "([^,]+)") do
part = mw.text.trim(part)
if part ~= "" then
table.insert(out, part)
end
end
return out
end
function p.store(frame)
local args = frame.args
local num = mw.text.trim(args.num or "")
local tags = args.tags or ""
if num == "" then
return ""
end
local list = split_tags(tags)
if #list == 0 then
return ""
end
local chunks = {}
for _, tag in ipairs(list) do
tag = mw.text.trim(tag)
-- безопаснее экранировать значения параметров (на случай |, =, } и т.п.)
table.insert(chunks, string.format("{{ТегСП7|num=%s|tag=%s}}",
mw.text.nowiki(num),
mw.text.nowiki(tag)
))
end
-- КЛЮЧЕВОЕ: прогнать сгенерированный текст через парсер
return frame:preprocess(table.concat(chunks, "\n"))
end
return p