Модуль:CategoryMenu
Материал из Space Station 14 Вики
Для документации этого модуля может быть создана страница Модуль: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 if paragraph then categoryMenu:tag('div') :addClass('category' .. categoryIndex .. '-paragraph' .. i) :wikitext(paragraph) end end -- Контент local content = html:tag('div'):addClass('content') for i, contentText in ipairs(contents) do if contentText then content:tag('div') :addClass('category' .. categoryIndex .. '-paragraph' .. i .. '-content') :wikitext(contentText) end 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] or '') table.insert(contents, args['category' .. i .. '-paragraph' .. j .. '-content'] or '') end mainContainer:wikitext(p.renderCategory(paragraphs, contents, categoryName, i)) end end return tostring(html) end return p