Documentation for this module may be created at Module:FLLinks/doc
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