Module:Tw

From Soyjak Wiki, the free ensoyclopedia
Jump to navigationJump to search



local p = {}

local CATEGORY_THRESHOLD = 3
local MAX_DISPLAYED = 5

local TRACKING_CATEGORY = 'Pages with template spam'
local IMMENSE_TRACKING_CATEGORY = 'Pages with immense template spam'

function p.main(frame)
    local pframe = frame:getParent()
    local args = pframe.args

    local items = {}
    local i = 1

    while true do
        local v = args[i]
        if v == nil then break end

        if v ~= '' then
            table.insert(items, v)
        end

        i = i + 1
    end

    if #items == 0 then
        return ''
    end

    local category = ''

    if args.nocat ~= '1' then
        if #items > MAX_DISPLAYED then
            category = '[[Category:' .. IMMENSE_TRACKING_CATEGORY .. ']]'
        elseif #items > CATEGORY_THRESHOLD then
            category = '[[Category:' .. TRACKING_CATEGORY .. ']]'
        end
    end

    local visible, hidden = {}, {}

    for idx, v in ipairs(items) do
        if idx <= 2 then
            table.insert(visible, v)
        elseif idx <= MAX_DISPLAYED then
            table.insert(hidden, v)
        else
            break
        end
    end

    local visibleText = table.concat(visible)

    if #hidden == 0 then
        return visibleText .. category
    end

    local hiddenText = table.concat(hidden)

    local out = {}
    table.insert(out, visibleText)
    table.insert(out, '<div class="collapsibletoggle center">[<span class="mw-customtoggle-tw showhidetext"><span class="collapsibletoggletext hiddentext">Collapse</span><span class="collapsibletoggletext">Expand</span></span>]</div>')
    table.insert(out, '<div id="mw-customcollapsible-tw" class="mw-collapsible mw-collapsed noexcerpt">')
    table.insert(out, hiddenText)
    table.insert(out, '</div>')
    table.insert(out, category)

    return table.concat(out, '\n')
end

return p