Module:NavboxGenerator: Difference between revisionsGive feedback
m parametize data |
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 | local boxSize = 5 - level -- Adjust box size reduction per level | ||
local fontSize = 150 - (level * 20) -- Adjust | 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 | 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%% | '<div style="font-size:%d%%; padding-left:%dpx; %s">%s</div>', | ||
fontSize, | fontSize, level * 10, data.Style or "", value | ||
)) | )) | ||
elseif type(value) == "table" then | |||
-- 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 | '<div style="font-size:%d%%; border:1px solid #aaa; padding:5px; margin:2px; %s">%s</div>', | ||
fontSize, | fontSize, value.Style or "", key | ||
)) | )) | ||
table.insert(result, generateNavbox(value, level + 1)) -- Recursively process next level | |||
end | end | ||
end | end | ||