Этот модуль реализует шаблоны {{Шаблон}}, {{ШаблонСсылка}} и {{ШаблонКод}}. Лучше этот модуль использовать именно через них.
-- Модуль для реализации шаблонов {{Шаблон}}, {{ШаблонКод}} и {{ШаблонСсылка}}
-- Экспортируемые настройки
local p = {}
function p.temp(f)
-- Вычислить аргументы
-- Допускается передача аргументов через аргумент функции f в другом модуле Lua,
-- через вызов {{#invoke: модуль | функция | аргумент1 | агрумент2 | ... }} или через
-- вызывающий шаблон
local args = f.args or f -- аргументы через {{#invoke:}} или вызов из другого модуля
if f == mw.getCurrentFrame() and args[1] == nil then
args = f:getParent().args -- аргументы через вызывающий шаблон
end
args[1] = mw.text.trim(args[1])
local type = mw.text.trim(args["тип"] or '') -- тип вывода
local tag = (type == 'code') and 'code' or 'kbd' -- теги
-- Теги для окраса в серый
local grayStart = '<span style="color: #696969">'
local grayEnd = '</span>'
-- Выводимый код
local wikicode = '<' .. tag .. '>' .. grayStart .. '{{' .. grayEnd
-- Добавление ссылки (если используется тип link)
if type == 'link' then
-- Открывающие скобки ссылки
wikicode = wikicode .. '[['
local colon = args[1]:find(':') -- местоположение первого двоеточия
if colon == nil then
-- Если в первом аргументе нет двоеточия, то ищем шаблон в пространстве имён Шаблон
wikicode = wikicode .. 'Шаблон:' .. args[1] .. '|' .. args[1]
else
if colon > 1 then
-- Если перед двоеточием есть префикс, то перед ним ставим двоеточие, чтобы избавиться
-- от проблем с интервики, категориями или файлами
wikicode = wikicode .. ':' .. args[1]
else
wikicode = wikicode .. args[1] .. '|' .. args[1]
end
end
-- Закрывающие скобки ссылки
wikicode = wikicode .. ']]'
else
wikicode = wikicode .. args[1]
end
-- Добавление параметров
if args[2] ~= nil then
for i, v in ipairs(args) do
if i > 1 then
-- добавляем параметр
wikicode = wikicode .. grayStart .. '|' .. grayEnd .. mw.text.trim(v)
end
end
end
-- Закрывающие скобки и тег
wikicode = wikicode .. grayStart .. '}}' .. grayEnd .. '</' .. tag .. '>'
return wikicode
end
-- Экспорт
return p