Дополнительные действия
Стандартная библиотека для функциональности, связанной с шаблонами.
Использование[править код]
Template.safeExpand(frame, 'someTemplate', {'myArg'})
API[править код]
-
Программное имя: Template
Раскрывает указанный шаблон, если он существует. Если шаблон отсутствует, возвращает defaultTemplate, если он предоставлен, в противном случае возвращает синтаксис для выделения отсутствующего шаблона
Раскрывает указанный шаблон.
Посмотрите всю нашу документацию 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