Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Revision as of 22:11, 13 June 2025 by GTEH (talk | contribs) (Created page with "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...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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