Module:NavboxGenerator: Difference between revisions

Sur (talk | contribs)
m parametize data
Sur (talk | contribs)
m use new format that allows specifying style and other attributes separately
Line 3: Line 3:
local function generateNavbox(data, level)
local function generateNavbox(data, level)
     local result = {}
     local result = {}
     local boxSize = 5 - level  -- Adjust this to control the box size reduction per level
     local boxSize = 5 - level  -- Adjust box size reduction per level
     local fontSize = 150 - (level * 20)  -- Adjust to decrease font size per level
     local fontSize = 150 - (level * 20)  -- Adjust font size reduction per level
      
      
     for key, value in pairs(data) do
     for key, value in pairs(data) do
         if type(value) == "table" then
         if key == "Style" then
            -- Skip "Style" as it's just an attribute holder
        elseif key == "Display" then
            -- Leaf node, render Display content
             table.insert(result, string.format(
             table.insert(result, string.format(
                 '<div style="font-size:%d%%; border:1px solid #aaa; padding:5px; margin:2px;">=%s=</div>',
                 '<div style="font-size:%d%%; padding-left:%dpx; %s">%s</div>',
                 fontSize, key
                 fontSize, level * 10, data.Style or "", value
             ))
             ))
            table.insert(result, generateNavbox(value, level + 1)-- Recursively process next level
        elseif type(value) == "table" then
        else
            -- Nested node, render title with optional Style and recurse
             table.insert(result, string.format(
             table.insert(result, string.format(
                 '<div style="font-size:%d%%; padding-left:%dpx; margin:2px;">%s</div>',
                 '<div style="font-size:%d%%; border:1px solid #aaa; padding:5px; margin:2px; %s">%s</div>',
                 fontSize, level * 10, value
                 fontSize, value.Style or "", key
             ))
             ))
            table.insert(result, generateNavbox(value, level + 1))  -- Recursively process next level
         end
         end
     end
     end