Модуль:CategoryMenu
Материал из Space Station 14 Вики
Версия от 19:25, 19 сентября 2024; Pok (обсуждение | вклад)
Для документации этого модуля может быть создана страница Модуль:CategoryMenu/doc
local p = {}
function p.renderCategory(paragraphs, contents, categoryName, categoryIndex)
local html = mw.html.create()
-- Генерация названия категории
html:tag('div')
:addClass('category' .. categoryIndex)
:wikitext(categoryName)
-- Меню
local menu = html:tag('div'):addClass('menu-container')
local categoryMenu = menu:tag('div'):addClass('menu category' .. categoryIndex .. '-menu')
for i, paragraph in ipairs(paragraphs) do
categoryMenu:tag('div')
:addClass('category' .. categoryIndex .. '-paragraph' .. i)
:wikitext(paragraph)
end
-- Контент
local content = html:tag('div'):addClass('content')
for i, contentText in ipairs(contents) do
content:tag('div')
:addClass('category' .. categoryIndex .. '-paragraph' .. i .. '-content')
:wikitext(contentText)
end
return tostring(html)
end
function p.main(frame)
local args = frame:getParent().args
local html = mw.html.create()
-- Генерация списка категорий
local categories = html:tag('div'):addClass('categories')
for i = 1, 2 do
local categoryName = args['category' .. i]
if categoryName then
categories:tag('div')
:addClass('category' .. i)
:wikitext(categoryName)
end
end
-- Основной контейнер
local mainContainer = html:tag('div'):addClass('main-container')
-- Генерация контента для каждой категории
for i = 1, 2 do
local categoryName = args['category' .. i]
if categoryName then
local paragraphs = {}
local contents = {}
for j = 1, 3 do
table.insert(paragraphs, args['category' .. i .. '-paragraph' .. j])
table.insert(contents, args['category' .. i .. '-paragraph' .. j .. '-content'])
end
mainContainer:wikitext(p.renderCategory(paragraphs, contents, categoryName, i))
end
end
return tostring(html)
end
return p