Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:BookTOC: Difference between revisions

From ProleWiki, the proletarian encyclopedia
CriticalResist (talk | contribs)
No edit summary
CriticalResist (talk | contribs)
No edit summary
Line 32: Line 32:
      
      
     return '<div class="mw-collapsible book-toc">\n' ..
     return '<div class="mw-collapsible book-toc">\n' ..
       "'''Table of contents'''\n" ..
       '<strong>Table of contents</strong>\n' ..
       '<div>' .. table.concat(list) .. '</div>' ..
       '<div>' .. table.concat(list) .. '</div>' ..
       '</div>'
       '</div>'


end
end


return p
return p

Revision as of 18:49, 12 August 2025

local p = {}

function p.main(frame)
    local args = frame:getParent().args
    local items = {}
    local levels = {}
    
    -- 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
    
    return '<div class="mw-collapsible book-toc">\n' ..
       '<strong>Table of contents</strong>\n' ..
       '<div>' .. table.concat(list) .. '</div>' ..
       '</div>'


end

return p