Модуль: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