Module:Tabs

From Helldivers Wiki
Jump to navigation Jump to search
Template-info.svg Documentation

This module implements Template:Tabs

local getArgs = require("Module:Arguments").getArgs

local p = {}

function p.main(frame)
    local args = getArgs(frame)
    return p._main(args)
end

function p._main(args)
    local tabs = {}
    tabs[#tabs + 1] = '{|class = "tabs '
    if args['containerClass'] then
        tabs[#tabs + 1] = args['containerClass']
    end
    tabs[#tabs + 1] = '"\n'
    tabs[#tabs + 1] = '|class = tab-spacer| \n'
    local fullPageName = mw.title.getCurrentTitle().prefixedText
    for i = 1, 20 do
        local name = args['name' .. i]
        local link = args['link' .. i]
        if name ~= nil then
        	tabs[#tabs + 1] =  '|class = "tab '
        	if args['tabClass'] then
        		tabs[#tabs + 1] = args['tabClass'] .. ' '
        	end
            if link then
                link = link:gsub('_', ' ')
                tabs[#tabs + 1] = fullPageName == link and 'tab-selected' or ''
            else
                tabs[#tabs + 1] = fullPageName == name and 'tab-selected' or ''
            end
            tabs[#tabs + 1] = '"'
            if args['style' .. i] then
                tabs[#tabs + 1] =  ('style="%s"'):format(args['style' .. i])
            end
            if link then
                tabs[#tabs + 1] =  ('|[[%s|%s]]\n'):format(link, name)
            else
                tabs[#tabs + 1] =  ('|[[/%s|%s]]\n'):format(name, name)
            end
            tabs[#tabs + 1] =  '|class=tab-spacer| \n'
        end
    end
    tabs[#tabs + 1] =  '|class=tab-spacer-end| \n'
    tabs[#tabs + 1] =  '|}'

    return table.concat(tabs)
end

return p