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

Documentation for this module may be created at Module:SectionLinkJoin/doc

local p = {}

function p.main(frame)
    local parent = frame:getParent()
    local args = parent and parent.args or {}
    return p._joinSectionLinks(args)
end

function p._joinSectionLinks(args)
    local items = {}
    local maxIndex = 0
    
    for key, value in pairs(args) do
        if tonumber(key) and value ~= '' then
            local index = tonumber(key)
            if index > maxIndex then maxIndex = index end
        end
    end
    
    for i = 1, maxIndex do
        if args[i] and args[i] ~= '' then
            local displayText = args[i]
            displayText = displayText:gsub("#", " § ")
            
            local linkTarget = args['link'..i] or args[i]
            
            local link = '[[' .. linkTarget .. '|' .. displayText .. ']]'
            table.insert(items, link)
        end
    end
    
    return p._joinList(items)
end

function p._joinList(list)
    local count = #list
    
    if count == 0 then
        return ""
    elseif count == 1 then
        return list[1]
    elseif count == 2 then
        return list[1] .. " and " .. list[2]
    else
        local firstPart = table.concat(list, "、", 1, count - 1)
        return firstPart .. " and " .. list[count]
    end
end

return p