https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Module%3ATeam_roster_navbox%2Fsandbox Module:Team roster navbox/sandbox - Revision history 2025-06-07T19:26:05Z Revision history for this page on the wiki MediaWiki 1.45.0-wmf.4 https://en.wikipedia.org/w/index.php?title=Module:Team_roster_navbox/sandbox&diff=1150683595&oldid=prev Lemondoge: Create sandbox version of Module:Team roster navbox, simplify regex 2023-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(&#039;Module:Navbox&#039;)<br /> <br /> local getArgs -- lazily initialized<br /> <br /> local function colorlinks(v, s)<br /> if v and v ~= &#039;&#039; and s and s ~= &#039;&#039; then<br /> if not mw.ustring.match(v, &#039;&lt;span style&#039;) then<br /> v = mw.ustring.gsub(v, &#039;%[%[([^%[%]|]*)%]%]&#039;, <br /> &#039;[[%1|&lt;span style=&quot;&#039; .. s .. &#039;&gt;%1&lt;/span&gt;]]&#039;)<br /> v = mw.ustring.gsub(v, &#039;%[%[([^%[%]|]*)|([^%[%]|]*)%]%]&#039;, <br /> &#039;[[%1|&lt;span style=&quot;&#039; .. s .. &#039;&gt;%2&lt;/span&gt;]]&#039;)<br /> end<br /> end<br /> return v<br /> end<br /> <br /> local function extractstyle(v)<br /> local r = &#039;&#039;<br /> local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(v or &#039;&#039;, &#039;&amp;#[Xx]23;&#039;, &#039;#&#039;), &#039;&amp;#35;&#039;, &#039;#&#039;), &#039;;&#039;)<br /> for k = 1,#slist do<br /> local s = slist[k]<br /> if s:match(&#039;^[%s]*background&#039;) or s:match(&#039;^[%s]*color&#039;) then<br /> r = r .. s .. &#039;;&#039;<br /> end<br /> end<br /> return r<br /> end <br /> <br /> function me.generateRosterNavbox(frame)<br /> if not getArgs then<br /> getArgs = require(&#039;Module:Arguments&#039;).getArgs<br /> end<br /> local args = { }<br /> local parentArgs = getArgs(frame)<br /> <br /> -- Default is to nowrap items<br /> args[&#039;nowrapitems&#039;] = &#039;yes&#039;<br /> <br /> -- Massage the styles for coloring the links<br /> local basestyle = extractstyle(parentArgs[&#039;basestyle&#039;] or &#039;&#039;)<br /> local titlestyle = extractstyle(parentArgs[&#039;titlestyle&#039;] or &#039;&#039;)<br /> local abovestyle = extractstyle(parentArgs[&#039;abovestyle&#039;] or &#039;&#039;)<br /> local groupstyle = extractstyle(parentArgs[&#039;groupstyle&#039;] or &#039;&#039;)<br /> local belowstyle = extractstyle(parentArgs[&#039;belowstyle&#039;] or &#039;&#039;)<br /> <br /> if basestyle ~= &#039;&#039; then<br /> titlestyle = basestyle .. &#039;;&#039; .. titlestyle<br /> abovestyle = basestyle .. &#039;;&#039; .. abovestyle<br /> groupstyle = basestyle .. &#039;;&#039; .. groupstyle<br /> belowstyle = basestyle .. &#039;;&#039; .. 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 ~= &#039;&#039; then<br /> if type(argName) == &#039;string&#039; then<br /> if argName == &#039;title&#039; then<br /> value = colorlinks(value, titlestyle)<br /> elseif argName == &#039;above&#039; then<br /> value = colorlinks(value, abovestyle)<br /> elseif mw.ustring.find(argName, &#039;^group[0-9]+$&#039;) then<br /> if parentArgs[argName .. &#039;style&#039;] then<br /> value = colorlinks(value, extractstyle(groupstyle .. &#039;;&#039; .. parentArgs[argName .. &#039;style&#039;]))<br /> else<br /> value = colorlinks(value, groupstyle)<br /> end<br /> elseif argName == &#039;below&#039; 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&#039;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