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

Модуль:Краткий вызов

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

Для документации этого модуля может быть создана страница Модуль:Краткий вызов/doc

local p = {}

-- Форматирование ссылки
local function formatLink(shortcut, isTemplate)
	local link = {'[', nil, ' ', shortcut, ']'}
	if isTemplate then
		link[1] = '{{['
		link[5] = ']}}'
		
		if not shortcut:match(":") then
			shortcut = "Шаблон:" .. shortcut
		end
	end
	link[2] = tostring(mw.uri.fullUrl(shortcut, "redirect=no"))
	return table.concat(link)
end

-- Основная функция
function p.shortcut(f)
	local args = require("Модуль:ProcessArgs").norm()
	
	-- Шаблон?
	local asTemplate = (args["шаблон"] or "да") == "да"
	
	-- Стили
	local tstyles = require("Модуль:TemplateStyles").load("Шаблон:Краткий вызов/styles.css")
	
	-- Обёртка
	local wrapper = mw.html.create("div"):addClass("shortcut-wrapper")
	
	-- Заглавие
	wrapper:tag("div"):addClass("shortcut-caption"):wikitext("Сокращения")
	
	-- Основной блок
	local main = wrapper:tag("div"):addClass("shortcut-main")
	
	-- Иконка
	main:tag("span"):addClass("shortcut-icon"):wikitext(
		"[[Файл:Redirectltr.png|20px|link=|Короткая ссылка-перенаправление|alt=↱|class=darkmode-invert]]"
	)
	
	-- Блок со ссылками
	local links = main:tag("ul"):addClass("shortcut-links list-style-none")
	links:addClass(asTemplate and "shortcut-links-template" or "shortcut-links-notemplate")
	
	-- Ссылки
	for _, shortcut in ipairs(args) do
		links:tag("li"):wikitext(formatLink(shortcut, asTemplate))
	end
	
	return tstyles, tostring(wrapper)
end

return p