Открыть меню
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Модуль:Template

Материал из wiki.iccup.org
Версия от 19:02, 3 сентября 2024; DarkMuse (обсуждение | вклад) (Новая страница: «--- -- @iCCup -- wiki=commons -- page=Module:Template -- -- local Arguments = require('Module:Arguments') local Json = require('Module:Json') local PageVariableNamespace = require('Module:PageVariableNamespace') local Template = {} --- Safely expands a template with given arguments. ---@param frame Frame ---@param title string ---@param args table? ---@param defaultTemplate any? ---@return string function Template.safeExpand(frame, title, args, defaultTem...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Стандартная библиотека для функциональности, связанной с шаблонами.

Использование[править код]

Template.safeExpand(frame, 'someTemplate', {'myArg'})

API[править код]

Программное имя: Template


safeExpand (frame: frame, title: string, args: table, defaultTemplate: template) → wikicode

Раскрывает указанный шаблон, если он существует. Если шаблон отсутствует, возвращает defaultTemplate, если он предоставлен, в противном случае возвращает синтаксис для выделения отсутствующего шаблона




expandTemplate (frame: frame, title: string, args: table) → wikicode

Раскрывает указанный шаблон.




Посмотрите всю нашу документацию iCCup здесь.



---
-- @iCCup
-- wiki=commons
-- page=Module:Template
--
--

local Arguments = require('Module:Arguments')
local Json = require('Module:Json')
local PageVariableNamespace = require('Module:PageVariableNamespace')

local Template = {}

--- Safely expands a template with given arguments.
---@param frame Frame
---@param title string
---@param args table?
---@param defaultTemplate any?
---@return string
function Template.safeExpand(frame, title, args, defaultTemplate)
    local result, value = pcall(frame.expandTemplate, frame, {title = title, args = args})
    if result then
        return value
    else
        local templateName = '[[Template:' .. (title or '') .. ']]'
        return defaultTemplate or templateName
    end
end

--- Expands a template with given arguments.
---@param frame Frame
---@param title string
---@param args table?
---@return string?
function Template.expandTemplate(frame, title, args)
    return frame:expandTemplate{title = title, args = args}
end

--- Stashes a return value in a specified namespace for later retrieval.
---@param value wikiVariableValue|table
---@param namespace string
---@return string
function Template.stashReturnValue(value, namespace)
    local pageVars = PageVariableNamespace(namespace or 'Template.return')
    local count = tonumber(pageVars:get('count')) or 0
    count = count + 1
    pageVars:set(count, Json.stringify(value))
    pageVars:set('count', count)
    return ''
end

--- Retrieves all values stashed by Template.stashReturnValue.
---@param namespace string
---@return table[]
function Template.retrieveReturnValues(namespace)
    local pageVars = PageVariableNamespace(namespace or 'Template.return')

    local count = tonumber(pageVars:get('count')) or 0
    pageVars:delete('count')

    local values = {}
    for i = 1, count do
        values[i] = Json.parse(pageVars:get(i))
        pageVars:delete(i)
    end
    return values
end

--- Stashes arguments of a template call for later retrieval.
---@param frame Frame
---@return string
function Template.stashArgs(frame)
    local args = Arguments.getArgs(frame)
    local namespace = args.namespace
    args.namespace = nil
    return Template.stashReturnValue(args, namespace)
end

return Template