Модуль:Участник:NickTheRed37/Nova/ШаблонКод — различия между версиями
Материал из Playzone Minecraft Wiki
Softer (обсуждение | вклад) м (1 версия импортирована) |
|
(нет различий)
|
Текущая версия на 00:27, 18 января 2017
Для документации этого модуля может быть создана страница Модуль:Участник:NickTheRed37/Nova/ШаблонКод/doc
-- Модуль для реализации шаблонов {{Шаблон}}, {{ШаблонКод}} и {{ШаблонСсылка}} -- Экспортируемые настройки 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