More languages
More actions
No edit summary |
No edit summary |
||
| Line 5: | Line 5: | ||
local items = {} | local items = {} | ||
local levels = {} | local levels = {} | ||
-- Check if collapsed parameter is set | |||
local collapsed = args.collapsed == "true" | |||
-- Collect all TOC items and their levels | -- Collect all TOC items and their levels | ||
| Line 29: | Line 32: | ||
-- Add list line | -- Add list line | ||
table.insert(list, string.rep('#', normalized_level) .. ' ' .. item .. '\n') | table.insert(list, string.rep('#', normalized_level) .. ' ' .. item .. '\n') | ||
end | |||
-- Add mw-collapsed class if collapsed=true | |||
local collapsible_class = "mw-collapsible mw-made-collapsible" | |||
if collapsed then | |||
collapsible_class = collapsible_class .. " mw-collapsed" | |||
end | end | ||
return '<div class="book-toc">\n' .. | return '<div class="book-toc">\n' .. | ||
'<div class=" | '<div class="' .. collapsible_class .. '">\n' .. | ||
'<strong>Table of contents</strong>\n' .. | '<strong>Table of contents</strong>\n' .. | ||
table.concat(list) .. | table.concat(list) .. | ||
'</div>\n' .. | '</div>\n' .. | ||
'</div>' | '</div>' | ||
end | end | ||
return p | return p | ||
Revision as of 10:59, 18 August 2025
local p = {}
function p.main(frame)
local args = frame:getParent().args
local items = {}
local levels = {}
-- Check if collapsed parameter is set
local collapsed = args.collapsed == "true"
-- Collect all TOC items and their levels
local i = 1
while args['item' .. i] do
items[i] = args['item' .. i]
levels[i] = tonumber(args['level' .. i]) or 2 -- Default to level 2
i = i + 1
end
if #items == 0 then
return ''
end
-- Find minimum level
local min_level = math.min(unpack(levels))
local list = {}
for idx = 1, #items do
local normalized_level = levels[idx] - min_level + 1
local item = items[idx]
-- Add list line
table.insert(list, string.rep('#', normalized_level) .. ' ' .. item .. '\n')
end
-- Add mw-collapsed class if collapsed=true
local collapsible_class = "mw-collapsible mw-made-collapsible"
if collapsed then
collapsible_class = collapsible_class .. " mw-collapsed"
end
return '<div class="book-toc">\n' ..
'<div class="' .. collapsible_class .. '">\n' ..
'<strong>Table of contents</strong>\n' ..
table.concat(list) ..
'</div>\n' ..
'</div>'
end
return p