<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.gc-forever.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ANavbox</id>
	<title>Module:Navbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.gc-forever.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ANavbox"/>
	<link rel="alternate" type="text/html" href="http://www.gc-forever.com/wiki/index.php?title=Module:Navbox&amp;action=history"/>
	<updated>2026-04-12T20:32:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>http://www.gc-forever.com/wiki/index.php?title=Module:Navbox&amp;diff=8043&amp;oldid=prev</id>
		<title>Lumina33: Undo revision 8036 by Lumina33 (talk) reverting this as it appears to be a Scribunto thing (source: Yaron Koren textbook on MediaWiki)</title>
		<link rel="alternate" type="text/html" href="http://www.gc-forever.com/wiki/index.php?title=Module:Navbox&amp;diff=8043&amp;oldid=prev"/>
		<updated>2024-07-20T23:31:21Z</updated>

		<summary type="html">&lt;p&gt;Undo revision &lt;a href=&quot;/wiki/index.php?title=Special:Diff/8036&quot; title=&quot;Special:Diff/8036&quot;&gt;8036&lt;/a&gt; by &lt;a href=&quot;/wiki/index.php?title=Special:Contributions/Lumina33&quot; title=&quot;Special:Contributions/Lumina33&quot;&gt;Lumina33&lt;/a&gt; (&lt;a href=&quot;/wiki/index.php?title=User_talk:Lumina33&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Lumina33 (page does not exist)&quot;&gt;talk&lt;/a&gt;) reverting this as it appears to be a Scribunto thing (source: Yaron Koren textbook on MediaWiki)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:31, 20 July 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local HtmlBuilder = require(&amp;#039;Module:HtmlBuilder&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local HtmlBuilder = require(&amp;#039;Module:HtmlBuilder&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local Navbar = require(&amp;#039;Module:Navbar&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local Navbar = require(&amp;#039;Module:Navbar&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l408&quot;&gt;Line 408:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 408:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;return p&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;return p&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lumina33</name></author>
	</entry>
	<entry>
		<id>http://www.gc-forever.com/wiki/index.php?title=Module:Navbox&amp;diff=8036&amp;oldid=prev</id>
		<title>Lumina33: made everything monospaced</title>
		<link rel="alternate" type="text/html" href="http://www.gc-forever.com/wiki/index.php?title=Module:Navbox&amp;diff=8036&amp;oldid=prev"/>
		<updated>2024-07-20T23:14:13Z</updated>

		<summary type="html">&lt;p&gt;made everything monospaced&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:14, 20 July 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local HtmlBuilder = require(&amp;#039;Module:HtmlBuilder&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local HtmlBuilder = require(&amp;#039;Module:HtmlBuilder&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local Navbar = require(&amp;#039;Module:Navbar&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local Navbar = require(&amp;#039;Module:Navbar&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l408&quot;&gt;Line 408:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 408:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;return p&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;return p&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lumina33</name></author>
	</entry>
	<entry>
		<id>http://www.gc-forever.com/wiki/index.php?title=Module:Navbox&amp;diff=1056&amp;oldid=prev</id>
		<title>Cybertronic: Created page with &quot;  local HtmlBuilder = require(&#039;Module:HtmlBuilder&#039;) local Navbar = require(&#039;Module:Navbar&#039;)  local args local frame local tableRowAdded = false local border local listnums = {}  ...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.gc-forever.com/wiki/index.php?title=Module:Navbox&amp;diff=1056&amp;oldid=prev"/>
		<updated>2013-04-29T07:59:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;  local HtmlBuilder = require(&amp;#039;Module:HtmlBuilder&amp;#039;) local Navbar = require(&amp;#039;Module:Navbar&amp;#039;)  local args local frame local tableRowAdded = false local border local listnums = {}  ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &lt;br /&gt;
local HtmlBuilder = require(&amp;#039;Module:HtmlBuilder&amp;#039;)&lt;br /&gt;
local Navbar = require(&amp;#039;Module:Navbar&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local args&lt;br /&gt;
local frame&lt;br /&gt;
local tableRowAdded = false&lt;br /&gt;
local border&lt;br /&gt;
local listnums = {}&lt;br /&gt;
 &lt;br /&gt;
function trim(s)&lt;br /&gt;
    return (mw.ustring.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function addTableRow(tbl)&lt;br /&gt;
    -- If any other rows have already been added, then we add a 2px gutter row.&lt;br /&gt;
    if tableRowAdded then&lt;br /&gt;
        tbl&lt;br /&gt;
            .tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
                .css(&amp;#039;height&amp;#039;, &amp;#039;2px&amp;#039;)&lt;br /&gt;
                .tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    tableRowAdded = true&lt;br /&gt;
    &lt;br /&gt;
    return tbl.tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Title row&lt;br /&gt;
--&lt;br /&gt;
function renderTitleRow(tbl)&lt;br /&gt;
    if not args.title then return end&lt;br /&gt;
 &lt;br /&gt;
    local titleRow = addTableRow(tbl)&lt;br /&gt;
     &lt;br /&gt;
    if args.titlegroup then&lt;br /&gt;
        titleRow&lt;br /&gt;
            .tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
                .attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
                .addClass(&amp;#039;navbox-group&amp;#039;)&lt;br /&gt;
                .addClass(args.titlegroupclass)&lt;br /&gt;
                .cssText(args.basestyle)&lt;br /&gt;
                .cssText(args.groupstyle)&lt;br /&gt;
                .cssText(args.titlegroupstyle)&lt;br /&gt;
                .wikitext(args.titlegroup)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local titleCell = titleRow.tag(&amp;#039;th&amp;#039;).attr(&amp;#039;scope&amp;#039;, &amp;#039;col&amp;#039;)&lt;br /&gt;
            &lt;br /&gt;
    if args.titlegroup then&lt;br /&gt;
        titleCell&lt;br /&gt;
            .css(&amp;#039;border-left&amp;#039;, &amp;#039;2px solid #fdfdfd&amp;#039;)&lt;br /&gt;
            .css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local titleColspan = 2&lt;br /&gt;
    if args.imageleft then titleColspan = titleColspan + 1 end&lt;br /&gt;
    if args.image then titleColspan = titleColspan + 1 end&lt;br /&gt;
    if args.titlegroup then titleColspan = titleColspan - 1 end&lt;br /&gt;
    &lt;br /&gt;
    titleCell&lt;br /&gt;
        .cssText(args.basestyle)&lt;br /&gt;
        .cssText(args.titlestyle)&lt;br /&gt;
        .addClass(&amp;#039;navbox-title&amp;#039;)&lt;br /&gt;
        .attr(&amp;#039;colspan&amp;#039;, titleColspan)&lt;br /&gt;
 &lt;br /&gt;
     renderNavBar(titleCell)&lt;br /&gt;
 &lt;br /&gt;
     titleCell&lt;br /&gt;
         .tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
             .addClass(args.titleclass)&lt;br /&gt;
             .css(&amp;#039;font-size&amp;#039;, &amp;#039;110%&amp;#039;)&lt;br /&gt;
             .newline()&lt;br /&gt;
             .wikitext(args.title)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function renderNavBar(titleCell)&lt;br /&gt;
    -- Depending on the presence of the navbar and/or show/hide link, we may need to add a spacer div on the left&lt;br /&gt;
    -- or right to keep the title centered.&lt;br /&gt;
    local spacerSide = nil&lt;br /&gt;
&lt;br /&gt;
    if args.navbar == &amp;#039;off&amp;#039; then&lt;br /&gt;
        -- No navbar, and client wants no spacer, i.e. wants the title to be shifted to the left. If there&amp;#039;s&lt;br /&gt;
        -- also no show/hide link, then we need a spacer on the right to achieve the left shift.&lt;br /&gt;
        if args.state == &amp;#039;plain&amp;#039; then spacerSide = &amp;#039;right&amp;#039; end&lt;br /&gt;
    elseif args.navbar == &amp;#039;plain&amp;#039; or args.navbar == &amp;#039;off&amp;#039; or (not args.name and (border == &amp;#039;subgroup&amp;#039; or border == &amp;#039;child&amp;#039; or border == &amp;#039;none&amp;#039;)) then&lt;br /&gt;
        -- No navbar. Need a spacer on the left to balance out the width of the show/hide link.&lt;br /&gt;
        if args.state ~= &amp;#039;plain&amp;#039; then spacerSide = &amp;#039;left&amp;#039; end&lt;br /&gt;
    else&lt;br /&gt;
        -- Will render navbar (or error message). If there&amp;#039;s no show/hide link, need a spacer on the right&lt;br /&gt;
        -- to balance out the width of the navbar.&lt;br /&gt;
        if args.state == &amp;#039;plain&amp;#039; then spacerSide = &amp;#039;right&amp;#039; end&lt;br /&gt;
&lt;br /&gt;
        titleCell.wikitext(Navbar.navbar({ &lt;br /&gt;
            args.name, &lt;br /&gt;
            mini = 1, &lt;br /&gt;
            fontstyle = (args.basestyle or &amp;#039;&amp;#039;) .. &amp;#039;;&amp;#039; .. (args.titlestyle or &amp;#039;&amp;#039;) ..  &amp;#039;;background:none transparent;border:none;&amp;#039;&lt;br /&gt;
        }))&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Render the spacer div.&lt;br /&gt;
    if spacerSide then&lt;br /&gt;
        titleCell&lt;br /&gt;
            .tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
                .css(&amp;#039;float&amp;#039;, spacerSide)&lt;br /&gt;
                .css(&amp;#039;width&amp;#039;, &amp;#039;6em&amp;#039;)&lt;br /&gt;
                .wikitext(&amp;#039;&amp;amp;nbsp;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Above/Below rows&lt;br /&gt;
--&lt;br /&gt;
function renderAboveRow(tbl)&lt;br /&gt;
    if not args.above then return end&lt;br /&gt;
 &lt;br /&gt;
    addTableRow(tbl)&lt;br /&gt;
        .tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
            .addClass(&amp;#039;navbox-abovebelow&amp;#039;)&lt;br /&gt;
            .addClass(args.aboveclass)&lt;br /&gt;
            .cssText(args.basestyle)&lt;br /&gt;
            .cssText(args.abovestyle)&lt;br /&gt;
            .attr(&amp;#039;colspan&amp;#039;, getAboveBelowColspan())&lt;br /&gt;
            .tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
                .newline()&lt;br /&gt;
                .wikitext(args.above)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function renderBelowRow(tbl)&lt;br /&gt;
    if not args.below then return end&lt;br /&gt;
    &lt;br /&gt;
    addTableRow(tbl)&lt;br /&gt;
        .tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
            .addClass(&amp;#039;navbox-abovebelow&amp;#039;)&lt;br /&gt;
            .addClass(args.belowclass)&lt;br /&gt;
            .cssText(args.basestyle)&lt;br /&gt;
            .cssText(args.belowstyle)&lt;br /&gt;
            .attr(&amp;#039;colspan&amp;#039;, getAboveBelowColspan())&lt;br /&gt;
            .tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
                .newline()&lt;br /&gt;
                .wikitext(args.below)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getAboveBelowColspan()&lt;br /&gt;
    local ret = 2&lt;br /&gt;
    if args.imageleft then ret = ret + 1 end&lt;br /&gt;
    if args.image then ret = ret + 1 end&lt;br /&gt;
    return ret&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
--&lt;br /&gt;
--   List rows&lt;br /&gt;
--&lt;br /&gt;
function renderListRow(tbl, listnum)&lt;br /&gt;
    local row = addTableRow(tbl)&lt;br /&gt;
    &lt;br /&gt;
    if listnum == 1 and args.imageleft then&lt;br /&gt;
        row&lt;br /&gt;
            .tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
                .addClass(&amp;#039;navbox-image&amp;#039;)&lt;br /&gt;
                .addClass(args.imageclass)&lt;br /&gt;
                .css(&amp;#039;width&amp;#039;, &amp;#039;0%&amp;#039;)&lt;br /&gt;
                .css(&amp;#039;padding&amp;#039;, &amp;#039;0px 2px 0px 0px&amp;#039;)&lt;br /&gt;
                .cssText(args.imageleftstyle)&lt;br /&gt;
                .attr(&amp;#039;rowspan&amp;#039;, 2 * #listnums - 1)&lt;br /&gt;
                .tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
                    .newline()&lt;br /&gt;
                    .wikitext(args.imageleft)&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    if args[&amp;#039;group&amp;#039; .. listnum] then&lt;br /&gt;
        local groupCell = row.tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        groupCell&lt;br /&gt;
               .attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
               .addClass(&amp;#039;navbox-group&amp;#039;)&lt;br /&gt;
               .addClass(args.groupclass)&lt;br /&gt;
               .cssText(args.basestyle)&lt;br /&gt;
               &lt;br /&gt;
        if args.groupwidth then&lt;br /&gt;
            groupCell.css(&amp;#039;width&amp;#039;, args.groupwidth)&lt;br /&gt;
        end&lt;br /&gt;
           &lt;br /&gt;
        groupCell&lt;br /&gt;
            .cssText(args.groupstyle)&lt;br /&gt;
            .cssText(args[&amp;#039;group&amp;#039; .. listnum .. &amp;#039;style&amp;#039;])&lt;br /&gt;
            .wikitext(args[&amp;#039;group&amp;#039; .. listnum])&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local listCell = row.tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    if args[&amp;#039;group&amp;#039; .. listnum] then&lt;br /&gt;
        listCell&lt;br /&gt;
            .css(&amp;#039;text-align&amp;#039;, &amp;#039;left&amp;#039;)&lt;br /&gt;
            .css(&amp;#039;border-left-width&amp;#039;, &amp;#039;2px&amp;#039;)&lt;br /&gt;
            .css(&amp;#039;border-left-style&amp;#039;, &amp;#039;solid&amp;#039;)&lt;br /&gt;
    else&lt;br /&gt;
        listCell.attr(&amp;#039;colspan&amp;#039;, 2)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if not args.groupwidth then &lt;br /&gt;
        listCell.css(&amp;#039;width&amp;#039;, &amp;#039;100%&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local isOdd = (listnum % 2) == 1&lt;br /&gt;
    local rowstyle = args.evenstyle&lt;br /&gt;
    if isOdd then rowstyle = args.oddstyle end&lt;br /&gt;
 &lt;br /&gt;
    local evenOdd&lt;br /&gt;
    if args.evenodd == &amp;#039;swap&amp;#039; then&lt;br /&gt;
        if isOdd then evenOdd = &amp;#039;even&amp;#039; else evenOdd = &amp;#039;odd&amp;#039; end&lt;br /&gt;
    else&lt;br /&gt;
        if isOdd then evenOdd = args.evenodd or &amp;#039;odd&amp;#039; else evenOdd = args.evenodd or &amp;#039;even&amp;#039; end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    listCell&lt;br /&gt;
        .css(&amp;#039;padding&amp;#039;, &amp;#039;0px&amp;#039;)&lt;br /&gt;
        .cssText(args.liststyle)&lt;br /&gt;
        .cssText(rowstyle)&lt;br /&gt;
        .cssText(args[&amp;#039;list&amp;#039; .. listnum .. &amp;#039;style&amp;#039;])&lt;br /&gt;
        .addClass(&amp;#039;navbox-list&amp;#039;)&lt;br /&gt;
        .addClass(&amp;#039;navbox-&amp;#039; .. evenOdd)&lt;br /&gt;
        .addClass(args.listclass)&lt;br /&gt;
        .tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
            .css(&amp;#039;padding&amp;#039;, (listnum == 1 and args.list1padding) or args.listpadding or &amp;#039;0em 0.25em&amp;#039;)&lt;br /&gt;
            .newline()&lt;br /&gt;
            .wikitext(args[&amp;#039;list&amp;#039; .. listnum])&lt;br /&gt;
&lt;br /&gt;
    if listnum == 1 and args.image then&lt;br /&gt;
        row&lt;br /&gt;
            .tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
                .addClass(&amp;#039;navbox-image&amp;#039;)&lt;br /&gt;
                .addClass(args.imageclass)&lt;br /&gt;
                .css(&amp;#039;width&amp;#039;, &amp;#039;0%&amp;#039;)&lt;br /&gt;
                .css(&amp;#039;padding&amp;#039;, &amp;#039;0px 0px 0px 2px&amp;#039;)&lt;br /&gt;
                .cssText(args.imagestyle)&lt;br /&gt;
                .attr(&amp;#039;rowspan&amp;#039;, 2 * #listnums - 1)&lt;br /&gt;
                .tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
                    .newline()&lt;br /&gt;
                    .wikitext(args.image)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Tracking categories&lt;br /&gt;
--&lt;br /&gt;
function renderTrackingCategories(builder)&lt;br /&gt;
    local frame = mw.getCurrentFrame()&lt;br /&gt;
    &lt;br /&gt;
    if not frame then return end&lt;br /&gt;
    &lt;br /&gt;
    local s = frame:preprocess(&amp;#039;{{#ifeq:{{NAMESPACE}}|{{ns:10}}|1|0}}{{SUBPAGENAME}}&amp;#039;)&lt;br /&gt;
    if mw.ustring.sub(s, 1, 1) == &amp;#039;0&amp;#039; then return end -- not in template space&lt;br /&gt;
    local subpage = mw.ustring.lower(mw.ustring.sub(s, 2))&lt;br /&gt;
    if subpage == &amp;#039;doc&amp;#039; or subpage == &amp;#039;sandbox&amp;#039; or subpage == &amp;#039;testcases&amp;#039; then return end&lt;br /&gt;
    &lt;br /&gt;
    for i, cat in ipairs(getTrackingCategories()) do&lt;br /&gt;
        builder.wikitext(&amp;#039;[[Category:&amp;#039; .. cat .. &amp;#039;]]&amp;#039;) &lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getTrackingCategories()&lt;br /&gt;
    local cats = {}&lt;br /&gt;
    if needsHorizontalLists() then table.insert(cats, &amp;#039;Navigational boxes without horizontal lists&amp;#039;) end&lt;br /&gt;
    if hasCustomListSpacing() then table.insert(cats, &amp;#039;Navigational boxes with custom list spacing&amp;#039;) end&lt;br /&gt;
    if hasBackgroundColors() then table.insert(cats, &amp;#039;Navboxes using background colours&amp;#039;) end&lt;br /&gt;
    return cats&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function needsHorizontalLists()&lt;br /&gt;
    if border == &amp;#039;child&amp;#039; or border == &amp;#039;subgroup&amp;#039;  or args.tracking == &amp;#039;no&amp;#039; then return false end&lt;br /&gt;
    &lt;br /&gt;
    local listClasses = {&amp;#039;plainlist&amp;#039;, &amp;#039;hlist&amp;#039;, &amp;#039;hlist hnum&amp;#039;, &amp;#039;hlist vcard&amp;#039;, &amp;#039;vcard hlist&amp;#039;}&lt;br /&gt;
    for i, cls in ipairs(listClasses) do&lt;br /&gt;
        if args.listclass == cls or args.bodyclass == cls then&lt;br /&gt;
            return false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function hasCustomListSpacing()&lt;br /&gt;
    return args.liststyle == &amp;#039;padding: 0.25em 0; line-height: 1.3em;&amp;#039; or &lt;br /&gt;
           args.liststyle == &amp;#039;padding:0.25em 0; line-height:1.4em; width:auto;&amp;#039; or &lt;br /&gt;
           args.liststyle == &amp;#039;padding:0.4em 0; line-height:1.4em;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function hasBackgroundColors()&lt;br /&gt;
    return args.titlestyle or args.groupstyle&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
--   Main navbox tables&lt;br /&gt;
--&lt;br /&gt;
function renderMainTable()&lt;br /&gt;
    local tbl = HtmlBuilder.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
        .attr(&amp;#039;cellspacing&amp;#039;, 0)&lt;br /&gt;
        .addClass(&amp;#039;nowraplinks&amp;#039;)&lt;br /&gt;
        .addClass(args.bodyclass)&lt;br /&gt;
             &lt;br /&gt;
    if args.title and (args.state ~= &amp;#039;plain&amp;#039; and args.state ~= &amp;#039;off&amp;#039;) then&lt;br /&gt;
        tbl&lt;br /&gt;
            .addClass(&amp;#039;collapsible&amp;#039;)&lt;br /&gt;
            .addClass(args.state or &amp;#039;autocollapse&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    tbl.css(&amp;#039;border-spacing&amp;#039;, 0)&lt;br /&gt;
    if border == &amp;#039;subgroup&amp;#039; or border == &amp;#039;child&amp;#039; or border == &amp;#039;none&amp;#039; then&lt;br /&gt;
        tbl&lt;br /&gt;
            .addClass(&amp;#039;navbox-subgroup&amp;#039;)&lt;br /&gt;
            .cssText(args.bodystyle)&lt;br /&gt;
            .cssText(args.style)&lt;br /&gt;
    else -- regular navobx - bodystyle and style will be applied to the wrapper table&lt;br /&gt;
        tbl&lt;br /&gt;
            .addClass(&amp;#039;navbox-inner&amp;#039;)&lt;br /&gt;
            .css(&amp;#039;background&amp;#039;, &amp;#039;transparent&amp;#039;)&lt;br /&gt;
            .css(&amp;#039;color&amp;#039;, &amp;#039;inherit&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
    tbl.cssText(args.innerstyle)&lt;br /&gt;
 &lt;br /&gt;
    renderTitleRow(tbl)&lt;br /&gt;
    renderAboveRow(tbl)&lt;br /&gt;
    for i, listnum in ipairs(listnums) do&lt;br /&gt;
        renderListRow(tbl, listnum) &lt;br /&gt;
    end&lt;br /&gt;
    renderBelowRow(tbl)&lt;br /&gt;
    &lt;br /&gt;
    return tbl&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbox(navboxArgs)&lt;br /&gt;
    args = navboxArgs&lt;br /&gt;
    &lt;br /&gt;
    for k, v in pairs(args) do&lt;br /&gt;
        local listnum = (&amp;#039;&amp;#039; .. k):match(&amp;#039;^list(%d+)$&amp;#039;)&lt;br /&gt;
        if listnum then table.insert(listnums, tonumber(listnum)) end&lt;br /&gt;
    end&lt;br /&gt;
    table.sort(listnums)&lt;br /&gt;
 &lt;br /&gt;
    border = trim(args.border or args[1] or &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    -- render the main body of the navbox&lt;br /&gt;
    local tbl = renderMainTable()&lt;br /&gt;
&lt;br /&gt;
    -- render the appropriate wrapper around the navbox, depending on the border param&lt;br /&gt;
    local res = HtmlBuilder.create()&lt;br /&gt;
    if border == &amp;#039;none&amp;#039; then&lt;br /&gt;
        res.node(tbl)&lt;br /&gt;
    elseif border == &amp;#039;subgroup&amp;#039; or border == &amp;#039;child&amp;#039; then&lt;br /&gt;
        -- We assume that this navbox is being rendered in a list cell of a parent navbox, and is&lt;br /&gt;
        -- therefore inside a div with padding:0em 0.25em. We start with a &amp;lt;/div&amp;gt; to avoid the&lt;br /&gt;
        -- padding being applied, and at the end add a &amp;lt;div&amp;gt; to balance out the parent&amp;#039;s &amp;lt;/div&amp;gt;&lt;br /&gt;
        res&lt;br /&gt;
            .tag(&amp;#039;/div&amp;#039;, {unclosed = true})&lt;br /&gt;
                .done()&lt;br /&gt;
            .node(tbl)&lt;br /&gt;
            .tag(&amp;#039;div&amp;#039;, {unclosed = true})&lt;br /&gt;
    else&lt;br /&gt;
        res&lt;br /&gt;
            .tag(&amp;#039;table&amp;#039;)&lt;br /&gt;
                .attr(&amp;#039;cellspacing&amp;#039;, 0)&lt;br /&gt;
                .addClass(&amp;#039;navbox&amp;#039;)&lt;br /&gt;
                .css(&amp;#039;border-spacing&amp;#039;, 0)&lt;br /&gt;
                .cssText(args.bodystyle)&lt;br /&gt;
                .cssText(args.style)&lt;br /&gt;
                .tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
                    .tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
                        .css(&amp;#039;padding&amp;#039;, &amp;#039;2px&amp;#039;)&lt;br /&gt;
                        .node(tbl)&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    renderTrackingCategories(res)&lt;br /&gt;
 &lt;br /&gt;
    return tostring(res)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function p.navbox(frame)&lt;br /&gt;
    -- ParserFunctions considers the empty string to be false, so to preserve the previous &lt;br /&gt;
    -- behavior of {{navbox}}, change any empty arguments to nil, so Lua will consider&lt;br /&gt;
    -- them false too.&lt;br /&gt;
    local args = {}&lt;br /&gt;
    local parent_args = frame:getParent().args;&lt;br /&gt;
&lt;br /&gt;
    -- Out of order parsing bug.&lt;br /&gt;
    local temp;&lt;br /&gt;
    temp = parent_args.title;&lt;br /&gt;
    temp = parent_args.above;&lt;br /&gt;
    for i = 1, 20 do&lt;br /&gt;
        temp = parent_args[&amp;quot;group&amp;quot; .. tostring(i)];&lt;br /&gt;
        temp = parent_args[&amp;quot;list&amp;quot; .. tostring(i)];&lt;br /&gt;
    end    &lt;br /&gt;
    temp = parent_args.below;&lt;br /&gt;
    &lt;br /&gt;
    for k, v in pairs(parent_args) do&lt;br /&gt;
        if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            args[k] = v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return p._navbox(args)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Cybertronic</name></author>
	</entry>
</feed>