Модуль:CategoryMenu
Материал из Space Station 14 Вики
Версия от 01:56, 19 сентября 2024; Pok (обсуждение | вклад) (Новая страница: «local p = {} function p.main(frame) local args = frame:getParent().args local output = "" -- Собираем категории local categories = {} for key, value in pairs(args) do local category = key:match("^(category%d+)$") if category and not categories[category] then categories[category] = {name = value, paragraphs = {}} end end -- Собираем пункты и контент дл...»)
Для документации этого модуля может быть создана страница Модуль:CategoryMenu/doc
local p = {}
function p.main(frame)
local args = frame:getParent().args
local output = ""
-- Собираем категории
local categories = {}
for key, value in pairs(args) do
local category = key:match("^(category%d+)$")
if category and not categories[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
-- Генерируем HTML-код для категорий
output = output .. '<div class="categories">\n'
for category, data in pairs(categories) do
output = output .. string.format('<div class="%s">%s</div>\n', category, data.name)
end
output = output .. '</div>\n\n'
-- Генерируем основной контейнер
output = output .. '<div class="main-container">\n'
-- Генерируем меню
output = output .. '<div class="menu-container">\n'
for category, data in pairs(categories) do
output = output .. string.format('<div class="menu %s-menu">\n', category)
for paragraph, paragraphData in pairs(data.paragraphs) do
output = output .. string.format('<div class="%s-%s">%s</div>\n', category, paragraph, paragraphData.title)
end
output = output .. '</div>\n'
end
output = output .. '</div>\n\n'
-- Генерируем контент
output = output .. '<div class="content">\n'
for category, data in pairs(categories) do
for paragraph, paragraphData in pairs(data.paragraphs) do
output = output .. string.format('<div class="%s-%s-content">%s</div>\n', category, paragraph, paragraphData.content or "")
end
end
output = output .. '</div>\n</div>\n'
return output
end
return p