Модуль:CategoryMenu: различия между версиями
Материал из Space Station 14 Вики
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 -- Собираем пункты и контент дл...») |
Pok (обсуждение | вклад) Нет описания правки |
||
Строка 43: | Строка 43: | ||
output = output .. string.format('<div class="menu %s-menu">\n', category) | output = output .. string.format('<div class="menu %s-menu">\n', category) | ||
for paragraph, paragraphData in pairs(data.paragraphs) do | for paragraph, paragraphData in pairs(data.paragraphs) do | ||
output = output .. string.format('<div class="%s-%s">%s</div>\n', category, paragraph, paragraphData.title) | output = output .. string.format('<div class="%s-%s">%s</div>\n', category, paragraph, paragraphData.title or "") | ||
end | end | ||
output = output .. '</div>\n' | output = output .. '</div>\n' |
Версия от 01:59, 19 сентября 2024
Для документации этого модуля может быть создана страница Модуль: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 or "") 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