Module:Team roster navbox

From Sim Football Wiki
Jump to navigation Jump to search

-- This module implements

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') v = mw.ustring.gsub(v, '%[%[([^%[%]|]*)|([^%[%]|]*)%]%]', '%2') 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