Модуль:CategoryMenu: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 42: | Строка 42: | ||
local menuContainer = mainContainer:tag('div'):addClass('menu-container') | local menuContainer = mainContainer:tag('div'):addClass('menu-container') | ||
for category, data in pairs(categories) do | for category, data in pairs(categories) do | ||
local menu = menuContainer:tag('div'):addClass(category .. '-menu') | local menu = menuContainer:tag('div'):addClass('menu ' .. category .. '-menu') | ||
for paragraph, paragraphData in pairs(data.paragraphs) do | for paragraph, paragraphData in pairs(data.paragraphs) do | ||
menu:tag('div'):addClass(category .. '-' .. paragraph):wikitext(paragraphData.title or "") | menu:tag('div'):addClass(category .. '-' .. paragraph):wikitext(paragraphData.title or "") | ||
Версия от 02:10, 19 сентября 2024
Для документации этого модуля может быть создана страница Модуль:CategoryMenu/doc
local p = {}
function p.main(frame)
local args = frame:getParent().args
local categories = {}
-- Собираем категории
for key, value in pairs(args) do
local category = key:match("^(category%d+)$")
if category then
categories[category] = {name = value, paragraphs = {}}
end
end
-- Собираем пункты и контент для каждой категории
for key, value in pairs(args) do
local category, paragraph, content = key:match("^(category%d+)-(paragraph%d+)(-content)?$")
if category and categories[category] then
if content then
categories[category].paragraphs[paragraph] = categories[category].paragraphs[paragraph] or {}
categories[category].paragraphs[paragraph].content = value
else
categories[category].paragraphs[paragraph] = categories[category].paragraphs[paragraph] or {}
categories[category].paragraphs[paragraph].title = value
end
end
end
-- Создаем главный контейнер
local root = mw.html.create('div')
-- Генерируем HTML-код для категорий
local categoriesDiv = root:tag('div'):addClass('categories')
for category, data in pairs(categories) do
categoriesDiv:tag('div'):addClass(category):wikitext(data.name)
end
-- Генерируем основной контейнер
local mainContainer = root:tag('div'):addClass('main-container')
-- Генерируем меню
local menuContainer = mainContainer:tag('div'):addClass('menu-container')
for category, data in pairs(categories) do
local menu = menuContainer:tag('div'):addClass('menu ' .. category .. '-menu')
for paragraph, paragraphData in pairs(data.paragraphs) do
menu:tag('div'):addClass(category .. '-' .. paragraph):wikitext(paragraphData.title or "")
end
end
-- Генерируем контент
local contentDiv = mainContainer:tag('div'):addClass('content')
for category, data in pairs(categories) do
for paragraph, paragraphData in pairs(data.paragraphs) do
contentDiv:tag('div'):addClass(category .. '-' .. paragraph .. '-content'):wikitext(paragraphData.content or "")
end
end
return tostring(root)
end
return p