Module:FLLinks

local util_args = require('Module:ArgsUtil') local util_text = require('Module:TextUtil') local util_title = require('Module:TitleUtil') local TAB_NAMES = mw.loadData('Module:SubpageSettings').tournaments local lang = mw.getLanguage('en')

local h = {}

function h.getLinks(argLinks, basepage) if not argLinks then return { links = {basepage}, names = {'Overview'} } else local extensions = util_text.split(argLinks) local names = {} local links = {} for k, v in ipairs(extensions) do			local tab = TAB_NAMES.lookup[lang:lc(v)] or v			names[#names+1] = TAB_NAMES.names[tab] links[#links+1] = util_title.concatSubpage(basepage, tab) end return { links = links, names = names } end end

function h.getStreams(argLinks, argNames) local links = util_text.split(argLinks or '') local names = h.getStreamNames(argNames, #links) return { links = links, names = names } end

function h.getStreamNames(names, len) if names then return util_text.split(argNames or '') elseif len == 1 then return { 'Stream' } else local output = {} for k = 1, len do output[#output+1] = 'Stream ' .. k		end return output end end

function h.makeOutput(basepage, tabs, streams) local output = mw.html.create('div') :addClass('fl-bottom') h.printLinks(output, tabs.links, tabs.names) h.printStreams(output, streams.links, streams.names) return output end

function h.printLinks(output, links, names) for i, v in ipairs(links) do		local content = util_text.intLink(v, names[i]) h.printOneLink(output, content) end end

function h.printStreams(output, links, names) for i, v in ipairs(links) do		local content = util_text.extLink(v, names[i]) h.printOneLink(output, content) end end

function h.printOneLink(output, content) output:tag('div') :addClass('fl-bottom-link') :wikitext(content) end

local p = {} function p.main(frame) local args = util_args.merge(true) local basepage = args.basepage if not basepage then error('Missing basepage!') end local tabs = h.getLinks(args.tabs, basepage) local streams = h.getStreams(args.streams, args.streamnames) return h.makeOutput(basepage, tabs, streams) end return p