Module:Team roster navbox
Documentation for this module may be created at Module:Team roster navbox/doc
-- This module implements {{team roster navbox}} local me = { } local Navbox = require('Module:Navbox') local function colorlinks(v, s) if v and v ~= '' and s and s ~= '' then if not mw.ustring.match(v, '<span style') then v = mw.ustring.gsub(v, '%[%[([^%[%]|]*)%]%]', '[[%1|<span style="' .. s .. '>%1</span>]]') v = mw.ustring.gsub(v, '%[%[([^%[%]|]*)|([^%[%]|]*)%]%]', '[[%1|<span style="' .. s .. '>%2</span>]]') end end return v end local function extractstyle(v) local r = '' local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(v or '', '&#[Xx]23;', '#'), '#', '#'), ';') for k = 1,#slist do local s = slist[k] if s:match('^[%s]*background') or s:match('^[%s]*color') then r = r .. s .. ';' end end return r end function me.generateRosterNavbox(frame) local args = { } local parentArgs = frame:getParent().args -- Massage the styles for coloring the links local basestyle = extractstyle(parentArgs['basestyle'] or '') local titlestyle = extractstyle(parentArgs['titlestyle'] or '') local abovestyle = extractstyle(parentArgs['abovestyle'] or '') local groupstyle = extractstyle(parentArgs['groupstyle'] or '') local belowstyle = extractstyle(parentArgs['belowstyle'] or '') if basestyle ~= '' then titlestyle = basestyle .. ';' .. titlestyle abovestyle = basestyle .. ';' .. abovestyle groupstyle = basestyle .. ';' .. groupstyle belowstyle = basestyle .. ';' .. belowstyle end -- Color links before passing them to the Navbox helper function for argName, value in pairs(parentArgs) do if value ~= '' then if type(argName) == 'string' then if argName == 'title' then value = colorlinks(value, titlestyle) elseif argName == 'above' then value = colorlinks(value, abovestyle) elseif mw.ustring.find(argName, '^group[0-9]') then value = colorlinks(value, groupstyle) elseif argName == 'below' then value = colorlinks(value, belowstyle) end args[argName] = value end end end args['nowrapitems'] = 'yes' -- Note Navbox.navbox() has a kludge to order the parent frame's args -- into a specific order. For now, this is omitted from this module. return Navbox._navbox(args) end -- function me.generateRosterNavbox return me