Module:Tw
From Soyjak Wiki, the free ensoyclopedia
Jump to navigationJump to search
| This module is rated as beta. It is considered ready for widespread use, but should be monitored to ensure results are as expected. |
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