Модуль:TemplateStyles
Внешний вид
Для документации этого модуля может быть создана страница Модуль:TemplateStyles/doc
local p = {}
-- Инициализация хранилища статических данных
local static = require("Модуль:Статические данные")
if not static.TemplateStyles then
static.TemplateStyles = { loadedTS = {} }
elseif not static.TemplateStyles.loadedTS then
static.TemplateStyles.loadedTS = {}
end
-- Осуществляет загрузку
function p.load(name)
local name = mw.text.trim(name or '')
if name == '' then
return nil
end
-- Инициализация подтаблицы для текущей страницы (возможно, не нужно)
local pagename = mw.title.getCurrentTitle()
if not static.TemplateStyles.loadedTS[pagename] then
static.TemplateStyles.loadedTS[pagename] = {}
end
-- Нормализация названия
if not mw.ustring.find(name, '^%w*:') then
name = 'Шаблон:' .. mw.ustring.gsub(name, "^%l", mw.ustring.upper)
else
name = mw.ustring.gsub(name, "^:?%l", mw.ustring.upper)
end
-- Загрузка либо пропуск
if static.TemplateStyles.loadedTS[pagename][name] == true then
return ''
else
static.TemplateStyles.loadedTS[pagename][name] = true
return mw.getCurrentFrame():extensionTag{ name = "templatestyles", args = { src = name } }
end
end
-- Обёртка для использования вне модулей
function p.main(f)
local args = f.args or f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
return p.load(args[1])
end
return p