Модуль:Сущность: различия между версиями

Материал из Space Station 14 Вики
Нет описания правки
Нет описания правки
Строка 26: Строка 26:
             end
             end
         end
         end
    end
    local cardTagText = entityData.collectCardTagText(frame, args, id)
    if cardTagText ~= "" then
        params = params .. "|cardTag=" .. cardTagText
        hasExtraArgs = true
     end
     end


Строка 37: Строка 31:
     local text = ajax
     local text = ajax


     if cardTagText ~= "" then
     if not hasExtraArgs then
        text = '<span style="display:none;">{{#invoke:CategoryFormatter|main|' .. cardTagText .. '}}</span>' .. ajax
        local cardTagText = entityData.collectCardTagText(frame, args, id)
    elseif not hasExtraArgs then
        if cardTagText ~= "" then
         text = "{{#if:{{NAMESPACE}}|{{переключатель_проекта|[[Категория:{{NAMESPACE}}:Сущности]]{{NAMESPACE}}}}|[[Категория:Сущности]]{{переключатель_проекта}}}}" .. ajax
            params = params .. "|cardTag=" .. cardTagText
        end
         text =
            "{{#if:{{NAMESPACE}}|{{переключатель_проекта|[[Категория:{{NAMESPACE}}:Сущности]]{{NAMESPACE}}}}|[[Категория:Сущности]]{{переключатель_проекта}}}}" ..
            '<span style="display:none;">{{#invoke:CategoryFormatter|main|' .. cardTagText .. '}}</span>' .. ajax
     end
     end



Версия от 18:04, 6 апреля 2026

Для документации этого модуля может быть создана страница Модуль:Сущность/doc

local p = {}
local getArgs = require('Module:Arguments').getArgs
local entityData = require('Module:Сущность/data')

local function trim(s)
    if not s then return "" end
    return mw.text.trim(tostring(s))
end

function p.get(frame)
    local args = getArgs(frame, { removeBlanks = false })
    local id = args[1] or ""
    if id == "" then
        return ""
    end

    local params = ""
    local hasExtraArgs = false

    for k, v in pairs(args) do
        if k ~= 1 and k ~= "cardTag" and k ~= "tag" and v ~= nil and v ~= "" then
            params = params .. "|" .. k .. "=" .. v

            if k ~= "blacklist" and k ~= "whitelist" then
                hasExtraArgs = true
            end
        end
    end

    local ajax = "{{ajax|<nowiki>{{#invoke:Сущность/data|get|" .. id .. params .. "}}</nowiki>|auto}}"
    local text = ajax

    if not hasExtraArgs then
        local cardTagText = entityData.collectCardTagText(frame, args, id)
        if cardTagText ~= "" then
            params = params .. "|cardTag=" .. cardTagText
        end
        text =
            "{{#if:{{NAMESPACE}}|{{переключатель_проекта|[[Категория:{{NAMESPACE}}:Сущности]]{{NAMESPACE}}}}|[[Категория:Сущности]]{{переключатель_проекта}}}}" ..
            '<span style="display:none;">{{#invoke:CategoryFormatter|main|' .. cardTagText .. '}}</span>' .. ajax
    end

    return frame:preprocess(text)
end

function p.preview(frame)
    local args = getArgs(frame, { removeBlanks = false })
    local id = args[1] or ""
    if id == "" then return "" end

    local params = ""
    for k, v in pairs(args) do
        if k ~= 1 and k ~= "cardTag" and k ~= "tag" then
            params = params .. "|" .. k .. "=" .. v
        end
    end

    local cardTagText = entityData.mergeCardTagText(args.cardTag or "", args.tag or "")
    if cardTagText ~= "" then
        params = params .. "|cardTag=" .. trim(cardTagText)
    end

    local text = "{{#invoke:Сущность/data|preview|" .. id .. params .. "}}"

    return frame:preprocess(text)
end

return p