https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Module%3ATeam_roster_navbox%2FsandboxModule:Team roster navbox/sandbox - Revision history2025-06-07T19:26:05ZRevision history for this page on the wikiMediaWiki 1.45.0-wmf.4https://en.wikipedia.org/w/index.php?title=Module:Team_roster_navbox/sandbox&diff=1150683595&oldid=prevLemondoge: Create sandbox version of Module:Team roster navbox, simplify regex2023-04-19T14:59:09Z<p>Create sandbox version of <a href="/wiki/Module:Team_roster_navbox" title="Module:Team roster navbox">Module:Team roster navbox</a>, simplify regex</p>
<p><b>New page</b></p><div>-- This module implements {{team roster navbox}}<br />
local me = { }<br />
<br />
local Navbox = require('Module:Navbox')<br />
<br />
local getArgs -- lazily initialized<br />
<br />
local function colorlinks(v, s)<br />
if v and v ~= '' and s and s ~= '' then<br />
if not mw.ustring.match(v, '<span style') then<br />
v = mw.ustring.gsub(v, '%[%[([^%[%]|]*)%]%]', <br />
'[[%1|<span style="' .. s .. '>%1</span>]]')<br />
v = mw.ustring.gsub(v, '%[%[([^%[%]|]*)|([^%[%]|]*)%]%]', <br />
'[[%1|<span style="' .. s .. '>%2</span>]]')<br />
end<br />
end<br />
return v<br />
end<br />
<br />
local function extractstyle(v)<br />
local r = ''<br />
local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(v or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';')<br />
for k = 1,#slist do<br />
local s = slist[k]<br />
if s:match('^[%s]*background') or s:match('^[%s]*color') then<br />
r = r .. s .. ';'<br />
end<br />
end<br />
return r<br />
end <br />
<br />
function me.generateRosterNavbox(frame)<br />
if not getArgs then<br />
getArgs = require('Module:Arguments').getArgs<br />
end<br />
local args = { }<br />
local parentArgs = getArgs(frame)<br />
<br />
-- Default is to nowrap items<br />
args['nowrapitems'] = 'yes'<br />
<br />
-- Massage the styles for coloring the links<br />
local basestyle = extractstyle(parentArgs['basestyle'] or '')<br />
local titlestyle = extractstyle(parentArgs['titlestyle'] or '')<br />
local abovestyle = extractstyle(parentArgs['abovestyle'] or '')<br />
local groupstyle = extractstyle(parentArgs['groupstyle'] or '')<br />
local belowstyle = extractstyle(parentArgs['belowstyle'] or '')<br />
<br />
if basestyle ~= '' then<br />
titlestyle = basestyle .. ';' .. titlestyle<br />
abovestyle = basestyle .. ';' .. abovestyle<br />
groupstyle = basestyle .. ';' .. groupstyle<br />
belowstyle = basestyle .. ';' .. belowstyle<br />
end<br />
<br />
-- Color links before passing them to the Navbox helper function<br />
for argName, value in pairs(parentArgs) do<br />
if value ~= '' then<br />
if type(argName) == 'string' then<br />
if argName == 'title' then<br />
value = colorlinks(value, titlestyle)<br />
elseif argName == 'above' then<br />
value = colorlinks(value, abovestyle)<br />
elseif mw.ustring.find(argName, '^group[0-9]+$') then<br />
if parentArgs[argName .. 'style'] then<br />
value = colorlinks(value, extractstyle(groupstyle .. ';' .. parentArgs[argName .. 'style']))<br />
else<br />
value = colorlinks(value, groupstyle)<br />
end<br />
elseif argName == 'below' then<br />
value = colorlinks(value, belowstyle)<br />
end<br />
args[argName] = value<br />
end<br />
end<br />
end<br />
-- Note Navbox.navbox() has a kludge to order the parent frame's args<br />
-- into a specific order. For now, this is omitted from this module.<br />
<br />
return Navbox._navbox(args)<br />
<br />
end -- function me.generateRosterNavbox<br />
<br />
return me</div>Lemondoge