Перейти к содержанию

Шаблон:НавигацияМодуль

Материал из GravityWiki

local p = {}

function p.navmenu(frame)

   local args = frame:getParent().args
   local currentTitle = mw.title.getCurrentTitle()
   
   local categories = {}
   
   for key, value in pairs(args) do
       if string.match(key, '^category%d+$') then
           local num = string.match(key, 'category(%d+)')
           categories[tonumber(num)] = {
               name = value,
               subitems = {}
           }
       end
   end
   
   for key, value in pairs(args) do
       if string.match(key, '^subitems%d+$') then
           local num = string.match(key, 'subitems(%d+)')
           num = tonumber(num)
           if categories[num] then
               -- Разделяем подпункты по точке с запятой
               local subitems = mw.text.split(value, ';')
               for _, item in ipairs(subitems) do
                   table.insert(categories[num].subitems, mw.text.trim(item))
               end
           end
       end
   end
   
   local sortedCategories = {}
   for num in pairs(categories) do
       table.insert(sortedCategories, num)
   end
   table.sort(sortedCategories)
   
   local html = {}
   table.insert(html, '<nav class="wiki-nav-menu">')

table.insert(html, '

') table.insert(html, '

')

   table.insert(html, '</nav>')
   
   return table.concat(html, '\n')

end

return p