Модуль: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
    return frame:expandTemplate{ title = template, args = p.getExistingTitles(args)}
end

return p