Перейти к содержанию

Модуль:TemplateStyles

Материал из LemonCraft Wiki

Для документации этого модуля может быть создана страница Модуль: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