Модуль:ExistWrapper
Функции
правитьgetExistingTitles
правитьФильтрует неименованный список, оставляя только существующие страницы (mw.title.exists аналогично {{#ifexist}}) из пространства имён |ns=
или |пи=
(по умолчанию — категории).
wrapExistingTitles
правитьРезультат getExistingTitles()
передаётся в указанный через |template=
или |шаблон=
шаблон в качестве неименованных аргументов.
local getArgs = require('Module:Arguments').getArgs
local tt = require('Module:TableTools')
local p = {}
local NS_TEMPLATE = 10
local NS_CATEGORY = 14
local function error_string(s)
return '<span class="error">' .. s .. '</span>'
end
function p.getExistingTitles(args)
local ns = args.ns or args["пи"] or NS_CATEGORY
local res = {}
for _, v in tt.sparseIpairs(args) do
if mw.title.new(v, ns).exists then
res[#res + 1] = v
end
end
return res
end
function p.wrapExistingTitles(frame)
local args = getArgs(frame)
local template = args.template or args["шаблон"] or ""
if template == "" then
return error_string("Укажите шаблон-обёртку")
end
if not mw.title.new(args.template, NS_TEMPLATE).exists then
return error_string("Шаблон " .. template .. " не существует")
end
local existingTitles = p.getExistingTitles(args)
local showIfNoneExists = args.showAlways or false
if #existingTitles > 0 or showIfNoneExists then
return frame:expandTemplate{ title = template, args = existingTitles}
end
return ''
end
return p