Title: Module:Navbox - freem
URL Source: https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox
Published Time: Fri, 31 Jul 2026 12:18:27 GMT
Markdown Content:
[Jump to content](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#bodyContent)
- [x] Main menu
Main menu
move to sidebar hide
Navigation
* [Main page](https://freemwiki.com/wiki/Main_Page "Visit the main page [alt-shift-z]")
* [Recent changes](https://freemwiki.com/wiki/Special:RecentChanges "A list of recent changes in the wiki [alt-shift-r]")
* [Random page](https://freemwiki.com/wiki/Special:Random "Load a random page [alt-shift-x]")
* [Help about MediaWiki](https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents)
Legal
* [Terms](https://freemwiki.com/wiki/Terms_of_Service)
* [Privacy Policy](https://freemwiki.com/wiki/Privacy_Policy)
* [About](https://freemwiki.com/wiki/About)
* [Contact](https://freemwiki.com/wiki/Contact)
[**freem**](https://freemwiki.com/wiki/Main_Page)
[Search](https://freemwiki.com/wiki/Special:Search "Search freem [alt-shift-f]")
Search
- [x] Appearance
* [Create account](https://freemwiki.com/index.php?title=Special:CreateAccount&returnto=Module%3ANavbox&returntoquery=oldid%3D579781 "You are encouraged to create an account and log in; however, it is not mandatory")
* [Log in](https://freemwiki.com/index.php?title=Special:UserLogin&returnto=Module%3ANavbox&returntoquery=oldid%3D579781 "You are encouraged to log in; however, it is not mandatory [alt-shift-o]")
- [x] Personal tools
* [Create account](https://freemwiki.com/index.php?title=Special:CreateAccount&returnto=Module%3ANavbox&returntoquery=oldid%3D579781 "You are encouraged to create an account and log in; however, it is not mandatory")
* [Log in](https://freemwiki.com/index.php?title=Special:UserLogin&returnto=Module%3ANavbox&returntoquery=oldid%3D579781 "You are encouraged to log in; however, it is not mandatory [alt-shift-o]")
Pages for logged out editors [learn more](https://freemwiki.com/wiki/Help:Introduction)
* [Contributions](https://freemwiki.com/wiki/Special:MyContributions "A list of edits made from this IP address [alt-shift-y]")
* [Talk](https://freemwiki.com/wiki/Special:MyTalk "Discussion about edits from this IP address [alt-shift-n]")
# Module:Navbox
- [x] Add languages
* [Module](https://freemwiki.com/wiki/Module:Navbox "View the module page [alt-shift-c]")
* [Discussion](https://freemwiki.com/index.php?title=Module_talk:Navbox&action=edit&redlink=1 "Discussion about the content page (page does not exist) [alt-shift-t]")
- [x] English
* [Read](https://freemwiki.com/wiki/Module:Navbox)
* [Edit source](https://freemwiki.com/index.php?title=Module:Navbox&action=edit&oldid=579781 "Edit the source code of this page [alt-shift-e]")
* [View history](https://freemwiki.com/index.php?title=Module:Navbox&action=history "Past revisions of this page [alt-shift-h]")
- [x] Tools
Tools
move to sidebar hide
Actions
* [Read](https://freemwiki.com/wiki/Module:Navbox)
* [Edit source](https://freemwiki.com/index.php?title=Module:Navbox&action=edit&oldid=579781 "Edit the source code of this page [alt-shift-e]")
* [View history](https://freemwiki.com/index.php?title=Module:Navbox&action=history)
General
* [What links here](https://freemwiki.com/wiki/Special:WhatLinksHere/Module:Navbox "A list of all wiki pages that link here [alt-shift-j]")
* [Related changes](https://freemwiki.com/wiki/Special:RecentChangesLinked/Module:Navbox "Recent changes in pages linked from this page [alt-shift-k]")
* [Special pages](https://freemwiki.com/wiki/Special:SpecialPages "A list of all special pages [alt-shift-q]")
* [Printable version](javascript:print(); "Printable version of this page [alt-shift-p]")
* [Permanent link](https://freemwiki.com/index.php?title=Module:Navbox&oldid=579781 "Permanent link to this revision of this page")
* [Page information](https://freemwiki.com/index.php?title=Module:Navbox&action=info "More information about this page")
Appearance
move to sidebar hide
From freem
Revision as of 01:16, 4 September 2025 by [en>Ahecht](https://freemwiki.com/wiki/User:Ahecht "en:User:Ahecht")(Remove redundant arghash calculation)
(diff) ← Older revision | [Latest revision](https://freemwiki.com/wiki/Module:Navbox "Module:Navbox") ([diff](https://freemwiki.com/index.php?title=Module:Navbox&diff=cur&oldid=579781 "Module:Navbox")) | [Newer revision →](https://freemwiki.com/index.php?title=Module:Navbox&direction=next&oldid=579781 "Module:Navbox") ([diff](https://freemwiki.com/index.php?title=Module:Navbox&diff=next&oldid=579781 "Module:Navbox"))
_Documentation for this module may be created at [Module:Navbox/doc](https://freemwiki.com/index.php?title=Module:Navbox/doc&action=edit&redlink=1 "Module:Navbox/doc (page does not exist)")_
[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-1)require('strict')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-2)local p = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-3)local cfg = mw.loadData(['Module:Navbox/configuration'](https://freemwiki.com/wiki/Module:Navbox/configuration))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-4)local inArray = require(["Module:TableTools"](https://freemwiki.com/wiki/Module:TableTools)).inArray[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-5)local getArgs -- lazily initialized[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-6)local hiding_templatestyles = {} [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-7)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-8)-- global passthrough variables[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-9)local passthrough = {[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-10)[cfg.arg.above]=true,[cfg.arg.aboveclass]=true,[cfg.arg.abovestyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-11)[cfg.arg.basestyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-12)[cfg.arg.below]=true,[cfg.arg.belowclass]=true,[cfg.arg.belowstyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-13)[cfg.arg.bodyclass]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-14)[cfg.arg.groupclass]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-15)[cfg.arg.image]=true,[cfg.arg.imageclass]=true,[cfg.arg.imagestyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-16)[cfg.arg.imageleft]=true,[cfg.arg.imageleftstyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-17)[cfg.arg.listclass]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-18)[cfg.arg.name]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-19)[cfg.arg.navbar]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-20)[cfg.arg.state]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-21)[cfg.arg.title]=true,[cfg.arg.titleclass]=true,[cfg.arg.titlestyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-22)argHash=true[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-23)}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-24)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-25)-- helper functions[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-26)local andnum = function(s, n) return string.format(cfg.arg[s .. '_and_num'], n) end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-27)local isblank = function(v) return (v or '') == '' end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-28)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-29)local function concatstrings(s)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-30)local r = table.concat(s, '')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-31)if r:match('^%s*$') then return nil end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-32)return r[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-33)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-34)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-35)local function concatstyles(s)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-36)local r = ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-37)for _, v in ipairs(s) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-38)v = mw.text.trim(v, "%s;")[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-39)if not isblank(v) then r = r .. v .. ';' end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-40)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-41)if isblank(r) then return nil end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-42)return r[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-43)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-44)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-45)local function getSubgroup(args, listnum, listText, prefix)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-46)local subArgs = {[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-47)[cfg.arg.border] = cfg.keyword.border_subgroup,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-48)[cfg.arg.navbar] = cfg.keyword.navbar_plain,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-49)argHash = 0[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-50)}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-51)local hasSubArgs = false[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-52)local subgroups_and_num = prefix and {prefix} or cfg.arg.subgroups_and_num[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-53)for k, v in pairs(args) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-54)k = tostring(k)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-55)for _, w in ipairs(subgroups_and_num) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-56)w = string.format(w, listnum) .. "_"[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-57)if (#k > #w) and (k:sub(1, #w) == w) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-58)subArgs[k:sub(#w + 1)] = v[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-59)hasSubArgs = true[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-60)subArgs.argHash = subArgs.argHash + (v and #v or 0)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-61)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-62)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-63)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-64)return hasSubArgs and p._navbox(subArgs) or listText[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-65)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-66)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-67)-- Main functions[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-68)function p._navbox(args)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-69)if args.type == cfg.keyword.with_collapsible_groups then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-70)return p._withCollapsibleGroups(args)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-71)elseif args.type == cfg.keyword.with_columns then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-72)return p._withColumns(args)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-73)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-74)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-75)local function striped(wikitext, border)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-76)-- Return wikitext with markers replaced for odd/even striping.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-77)-- Child (subgroup) navboxes are flagged with a category that is removed[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-78)-- by parent navboxes. The result is that the category shows all pages[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-79)-- where a child navbox is not contained in a parent navbox.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-80)local orphanCat = cfg.category.orphan[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-81)if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-82)-- No change; striping occurs in outermost navbox.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-83)return wikitext .. orphanCat[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-84)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-85)local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-86)if args[cfg.arg.evenodd] then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-87)if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-88)first, second = second, first[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-89)else[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-90)first = args[cfg.arg.evenodd][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-91)second = first[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-92)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-93)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-94)local changer[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-95)if first == second then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-96)changer = first[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-97)else[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-98)local index = 0[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-99)changer = function (code)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-100)if code == '0' then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-101)-- Current occurrence is for a group before a nested table.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-102)-- Set it to first as a valid although pointless class.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-103)-- The next occurrence will be the first row after a title[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-104)-- in a subgroup and will also be first.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-105)index = 0[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-106)return first[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-107)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-108)index = index + 1[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-109)return index % 2 == 1 and first or second[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-110)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-111)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-112)local regex = orphanCat:gsub('([%[%]])', '%%%1')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-113)return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-114)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-115)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-116)local function processItem(item, nowrapitems)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-117)if item:sub(1, 2) == '{|' then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-118)-- Applying nowrap to lines in a table does not make sense.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-119)-- Add newlines to compensate for trim of x in |parm=x in a template.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-120)return '\n' .. item .. '\n'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-121)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-122)if nowrapitems == cfg.keyword.nowrapitems_yes then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-123)local lines = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-124)for line in (item .. '\n'):gmatch('([^\n]*)\n') do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-125)local prefix, content = line:match('^([*:;#]+)%s*(.*)')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-126)if prefix and not content:match(cfg.pattern.nowrap) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-127)line = string.format(cfg.nowrap_item, prefix, content)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-128)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-129)table.insert(lines, line)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-130)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-131)item = table.concat(lines, '\n')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-132)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-133)if item:match('^[*:;#]') then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-134)return '\n' .. item .. '\n'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-135)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-136)return item[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-137)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-138)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-139)local function has_navbar()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-140)return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-141)and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-142)and ([](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-143)args[cfg.arg.name][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-144)or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-145)~= cfg.pattern.navbox[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-146))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-147)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-148)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-149)-- extract text color from css, which is the only permitted inline CSS for the navbar[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-150)local function extract_color(css_str)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-151)-- return nil because navbar takes its argument into mw.html which handles[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-152)-- nil gracefully, removing the associated style attribute[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-153)return mw.ustring.match(';' .. css_str .. ';', '.*;%s*([Cc][Oo][Ll][Oo][Rr]%s*:%s*.-)%s*;') or nil[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-154)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-155)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-156)local function renderNavBar(titleCell)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-157)if has_navbar() then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-158)local navbar = require(['Module:Navbar'](https://freemwiki.com/wiki/Module:Navbar))._navbar[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-159)titleCell:wikitext(navbar{[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-160)[cfg.navbar.name] = args[cfg.arg.name],[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-161)[cfg.navbar.mini] = 1,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-162)[cfg.navbar.fontstyle] = extract_color([](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-163)(args[cfg.arg.basestyle] or '') .. ';' .. (args[cfg.arg.titlestyle] or '')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-164))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-165)})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-166)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-167)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-168)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-169)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-170)local function renderTitleRow(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-171)if not args[cfg.arg.title] then return end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-172)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-173)local titleRow = tbl:tag('tr')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-174)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-175)local titleCell = titleRow:tag('th'):attr('scope', 'col')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-176)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-177)local titleColspan = 2[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-178)if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-179)if args[cfg.arg.image] then titleColspan = titleColspan + 1 end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-180)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-181)titleCell[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-182):cssText(args[cfg.arg.basestyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-183):cssText(args[cfg.arg.titlestyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-184):addClass(cfg.class.navbox_title)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-185):attr('colspan', titleColspan)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-186)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-187)renderNavBar(titleCell)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-188)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-189)titleCell[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-190):tag('div')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-191)-- id for aria-labelledby attribute[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-192):attr('id', mw.uri.anchorEncode(args[cfg.arg.title]) .. args.argHash)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-193):addClass(args[cfg.arg.titleclass])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-194):css('font-size', '114%')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-195):css('margin', '0 4em')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-196):wikitext(processItem(args[cfg.arg.title]))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-197)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-198)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-199)local function getAboveBelowColspan()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-200)local ret = 2[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-201)if args[cfg.arg.imageleft] then ret = ret + 1 end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-202)if args[cfg.arg.image] then ret = ret + 1 end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-203)return ret[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-204)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-205)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-206)local function renderAboveRow(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-207)if not args[cfg.arg.above] then return end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-208)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-209)tbl:tag('tr')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-210):tag('td')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-211):addClass(cfg.class.navbox_abovebelow)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-212):addClass(args[cfg.arg.aboveclass])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-213):cssText(args[cfg.arg.basestyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-214):cssText(args[cfg.arg.abovestyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-215):attr('colspan', getAboveBelowColspan())[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-216):tag('div')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-217)-- id for aria-labelledby attribute, if no title[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-218):attr('id', (not args[cfg.arg.title]) and [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-219)(mw.uri.anchorEncode(args[cfg.arg.above]) .. args.argHash)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-220)or nil)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-221):wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems]))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-222)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-223)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-224)local function renderBelowRow(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-225)if not args[cfg.arg.below] then return end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-226)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-227)tbl:tag('tr')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-228):tag('td')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-229):addClass(cfg.class.navbox_abovebelow)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-230):addClass(args[cfg.arg.belowclass])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-231):cssText(args[cfg.arg.basestyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-232):cssText(args[cfg.arg.belowstyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-233):attr('colspan', getAboveBelowColspan())[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-234):tag('div')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-235):wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems]))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-236)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-237)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-238)local function renderListRow(tbl, index, listnum, listnums_size)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-239)local row = tbl:tag('tr')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-240)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-241)if index == 1 and args[cfg.arg.imageleft] then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-242)row[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-243):tag('td')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-244):addClass(cfg.class.noviewer)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-245):addClass(cfg.class.navbox_image)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-246):addClass(args[cfg.arg.imageclass])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-247):css('width', '1px') -- Minimize width[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-248):css('padding', '0 2px 0 0')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-249):cssText(args[cfg.arg.imageleftstyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-250):attr('rowspan', listnums_size)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-251):tag('div')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-252):wikitext(processItem(args[cfg.arg.imageleft]))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-253)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-254)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-255)local group_and_num = andnum('group', listnum)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-256)local groupstyle_and_num = andnum('groupstyle', listnum)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-257)if args[group_and_num] then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-258)local groupCell = row:tag('th')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-259)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-260)-- id for aria-labelledby attribute, if lone group with no title or above[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-261)if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-262)groupCell[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-263):attr('id', mw.uri.anchorEncode(args[cfg.arg.group1]) .. args.argHash)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-264)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-265)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-266)groupCell[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-267):attr('scope', 'row')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-268):addClass(cfg.class.navbox_group)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-269):addClass(args[cfg.arg.groupclass])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-270):cssText(args[cfg.arg.basestyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-271)-- If groupwidth not specified, minimize width[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-272):css('width', args[cfg.arg.groupwidth] or '1%')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-273)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-274)groupCell[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-275):cssText(args[cfg.arg.groupstyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-276):cssText(args[groupstyle_and_num])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-277):wikitext(args[group_and_num])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-278)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-279)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-280)local listCell = row:tag('td')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-281)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-282)if args[group_and_num] then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-283)listCell[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-284):addClass(cfg.class.navbox_list_with_group)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-285)else[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-286)listCell:attr('colspan', 2)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-287)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-288)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-289)if not args[cfg.arg.groupwidth] then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-290)listCell:css('width', '100%')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-291)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-292)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-293)local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-294)if index % 2 == 1 then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-295)rowstyle = args[cfg.arg.oddstyle][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-296)else[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-297)rowstyle = args[cfg.arg.evenstyle][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-298)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-299)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-300)local list_and_num = andnum('list', listnum)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-301)local listText = inArray(cfg.keyword.subgroups, args[list_and_num])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-302)and getSubgroup(args, listnum, args[list_and_num]) or args[list_and_num][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-303)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-304)local oddEven = cfg.marker.oddeven[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-305)if listText:sub(1, 12) == '
plainlist is best-effort to preserve old Common.css ordering.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-388)-- this ordering is not a guarantee because most navboxes will emit only[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-389)-- one of these classes [hlist_note][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-390)return hlist_styles .. plainlist_styles[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-391)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-392)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-393)local function needsHorizontalLists(border)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-394)if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-395)return false[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-396)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-397)return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-398)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-399)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-400)local function hasBackgroundColors()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-401)for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-402)cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-403)if tostring(args[key]):find('background', 1, true) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-404)return true[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-405)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-406)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-407)return false[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-408)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-409)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-410)local function hasBorders()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-411)for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-412)cfg.arg.abovestyle, cfg.arg.belowstyle}) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-413)if tostring(args[key]):find('border', 1, true) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-414)return true[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-415)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-416)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-417)return false[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-418)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-419)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-420)local function isIllegible()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-421)local styleratio = require(['Module:Color contrast'](https://freemwiki.com/wiki/Module:Color_contrast))._styleratio[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-422)for key, style in pairs(args) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-423)if tostring(key):match(cfg.pattern.style) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-424)if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-425)return true[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-426)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-427)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-428)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-429)return false[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-430)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-431)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-432)local function getTrackingCategories(border)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-433)local cats = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-434)if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-435)if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-436)if isIllegible() then table.insert(cats, cfg.category.illegible) end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-437)if hasBorders() then table.insert(cats, cfg.category.borders) end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-438)return cats[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-439)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-440)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-441)local function renderTrackingCategories(builder, border)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-442)local title = mw.title.getCurrentTitle()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-443)if title.namespace ~= 10 then return end -- not in template space[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-444)local subpage = title.subpageText[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-445)if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-446)or subpage == cfg.keyword.subpage_testcases then return end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-447)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-448)for _, cat in ipairs(getTrackingCategories(border)) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-449)builder:wikitext('[[Category:' .. cat .. ']]')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-450)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-451)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-452)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-453)local function renderMainTable(border, listnums)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-454)local tbl = mw.html.create('table')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-455):addClass(cfg.class.nowraplinks)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-456):addClass(args[cfg.arg.bodyclass])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-457)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-458)local state = args[cfg.arg.state][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-459)if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-460)if state == cfg.keyword.state_collapsed then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-461)state = cfg.class.collapsed[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-462)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-463)tbl[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-464):addClass(cfg.class.collapsible)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-465):addClass(state or cfg.class.autocollapse)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-466)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-467)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-468)tbl:css('border-spacing', 0)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-469)if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-470)tbl[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-471):addClass(cfg.class.navbox_subgroup)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-472):cssText(args[cfg.arg.bodystyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-473):cssText(args[cfg.arg.style])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-474)else -- regular navbox - bodystyle and style will be applied to the wrapper table[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-475)tbl[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-476):addClass(cfg.class.navbox_inner)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-477):css('background', 'transparent')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-478):css('color', 'inherit')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-479)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-480)tbl:cssText(args[cfg.arg.innerstyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-481)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-482)renderTitleRow(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-483)renderAboveRow(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-484)local listnums_size = #listnums[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-485)for i, listnum in ipairs(listnums) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-486)renderListRow(tbl, i, listnum, listnums_size)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-487)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-488)renderBelowRow(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-489)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-490)return tbl[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-491)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-492)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-493)local function add_navbox_styles(hiding_templatestyles)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-494)local frame = mw.getCurrentFrame()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-495)-- This is a lambda so that it doesn't need the frame as a parameter[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-496)local function add_user_styles(templatestyles)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-497)if not isblank(templatestyles) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-498)return frame:extensionTag{[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-499)name = 'templatestyles', args = { src = templatestyles }[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-500)}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-501)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-502)return ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-503)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-504)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-505)-- get templatestyles. load base from config so that Lua only needs to do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-506)-- the work once of parser tag expansion[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-507)local base_templatestyles = cfg.templatestyles[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-508)local templatestyles = add_user_styles(args[cfg.arg.templatestyles])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-509)local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-510)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-511)-- The 'navbox-styles' div exists to wrap the styles to work around T200206[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-512)-- more elegantly. Instead of combinatorial rules, this ends up being linear[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-513)-- number of CSS rules.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-514)return mw.html.create('div')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-515):addClass(cfg.class.navbox_styles)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-516):wikitext([](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-517)add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-518)base_templatestyles ..[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-519)templatestyles ..[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-520)child_templatestyles ..[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-521)table.concat(hiding_templatestyles)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-522))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-523):done()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-524)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-525)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-526)-- work around [[[phab:T303378]]](https://freemwiki.com/wiki/Phab:T303378 "Phab:T303378")[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-527)-- for each arg: find all the templatestyles strip markers, insert them into a[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-528)-- table. then remove all templatestyles markers from the arg[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-529)local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-530)local argHash = 0[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-531)for k, arg in pairs(args) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-532)if type(arg) == 'string' then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-533)for marker in string.gfind(arg, strip_marker_pattern) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-534)table.insert(hiding_templatestyles, marker)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-535)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-536)argHash = argHash + #arg[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-537)args[k] = string.gsub(arg, strip_marker_pattern, '')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-538)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-539)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-540)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-541)if not args.argHash then args.argHash = argHash end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-542)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-543)local listnums = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-544)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-545)for k, _ in pairs(args) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-546)if type(k) == 'string' then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-547)local listnum = k:match(cfg.pattern.listnum)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-548)if listnum and args[andnum('list', tonumber(listnum))] then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-549)table.insert(listnums, tonumber(listnum))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-550)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-551)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-552)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-553)table.sort(listnums)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-554)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-555)local border = mw.text.trim(args[cfg.arg.border] or args[1] or '')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-556)if border == cfg.keyword.border_child then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-557)border = cfg.keyword.border_subgroup[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-558)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-559)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-560)-- render the main body of the navbox[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-561)local tbl = renderMainTable(border, listnums)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-562)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-563)local res = mw.html.create()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-564)-- render the appropriate wrapper for the navbox, based on the border param[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-565)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-566)if border == cfg.keyword.border_none then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-567)res:node(add_navbox_styles(hiding_templatestyles))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-568)local nav = res:tag('div')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-569):attr('role', 'navigation')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-570):node(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-571)-- aria-labelledby title, otherwise above, otherwise lone group[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-572)if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-573)and not args[cfg.arg.group2]) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-574)nav:attr([](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-575)'aria-labelledby',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-576)mw.uri.anchorEncode([](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-577)args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-578)) .. args.argHash[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-579))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-580)else[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-581)nav:attr('aria-label', cfg.aria_label .. args.argHash)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-582)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-583)elseif border == cfg.keyword.border_subgroup then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-584)-- We assume that this navbox is being rendered in a list cell of a[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-585)-- parent navbox, and is therefore inside a div with padding:0em 0.25em.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-586)-- We start with a to avoid the padding being applied, and at the[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-587)-- end add a to balance out the parent's
[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-588)res[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-589):wikitext('')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-590):node(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-591):wikitext('')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-592)else[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-593)res:node(add_navbox_styles(hiding_templatestyles))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-594)local nav = res:tag('div')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-595):attr('role', 'navigation')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-596):addClass(cfg.class.navbox)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-597):addClass(args[cfg.arg.navboxclass])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-598):cssText(args[cfg.arg.bodystyle])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-599):cssText(args[cfg.arg.style])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-600):css('padding', '3px')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-601):node(tbl)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-602)-- aria-labelledby title, otherwise above, otherwise lone group[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-603)if args[cfg.arg.title] or args[cfg.arg.above][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-604)or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-605)nav:attr([](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-606)'aria-labelledby',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-607)mw.uri.anchorEncode([](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-608)args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-609)) .. args.argHash[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-610))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-611)else[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-612)nav:attr('aria-label', cfg.aria_label .. args.argHash)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-613)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-614)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-615)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-616)if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-617)renderTrackingCategories(res, border)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-618)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-619)return striped(tostring(res), border)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-620)end --p._navbox[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-621)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-622)function p._withCollapsibleGroups(pargs)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-623)-- table for args passed to navbox[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-624)local targs = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-625)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-626)-- process args[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-627)local passthroughLocal = {[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-628)[cfg.arg.bodystyle] = true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-629)[cfg.arg.border] = true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-630)[cfg.arg.style] = true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-631)}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-632)for k,v in pairs(pargs) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-633)if k and type(k) == 'string' then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-634)if passthrough[k] or passthroughLocal[k] then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-635)targs[k] = v[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-636)elseif (k:match(cfg.pattern.num)) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-637)local n = k:match(cfg.pattern.num)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-638)local list_and_num = andnum('list', n)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-639)if ((k:match(cfg.pattern.listnum) or k:match(cfg.pattern.contentnum))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-640)and targs[list_and_num] == nil[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-641)and pargs[andnum('group', n)] == nil[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-642)and pargs[andnum('sect', n)] == nil[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-643)and pargs[andnum('section', n)] == nil) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-644)targs[list_and_num] = concatstrings({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-645)pargs[list_and_num] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-646)pargs[andnum('content', n)] or ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-647)})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-648)if (targs[list_and_num] and inArray(cfg.keyword.subgroups, targs[list_and_num])) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-649)targs[list_and_num] = getSubgroup(pargs, n, targs[list_and_num])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-650)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-651)elseif ((k:match(cfg.pattern.groupnum) or k:match(cfg.pattern.sectnum) or k:match(cfg.pattern.sectionnum))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-652)and targs[list_and_num] == nil) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-653)local titlestyle = concatstyles({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-654)pargs[cfg.arg.groupstyle] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-655)pargs[cfg.arg.secttitlestyle] or '', [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-656)pargs[andnum('groupstyle', n)] or '', [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-657)pargs[andnum('sectiontitlestyle', n)] or ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-658)})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-659)local liststyle = concatstyles({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-660)pargs[cfg.arg.liststyle] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-661)pargs[cfg.arg.contentstyle] or '', [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-662)pargs[andnum('liststyle', n)] or '', [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-663)pargs[andnum('contentstyle', n)] or ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-664)})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-665)local title = concatstrings({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-666)pargs[andnum('group', n)] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-667)pargs[andnum('sect', n)] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-668)pargs[andnum('section', n)] or ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-669)})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-670)local list = concatstrings({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-671)pargs[list_and_num] or '', [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-672)pargs[andnum('content', n)] or ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-673)})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-674)if list and inArray(cfg.keyword.subgroups, list) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-675)list = getSubgroup(pargs, n, list)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-676)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-677)local abbr_and_num = andnum('abbr', n)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-678)local state = (pargs[abbr_and_num] and pargs[abbr_and_num] == pargs[cfg.arg.selected]) [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-679)and cfg.keyword.state_uncollapsed[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-680)or (pargs[andnum('state', n)] or cfg.keyword.state_collapsed)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-681)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-682)targs[list_and_num] =p._navbox({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-683)cfg.keyword.border_child,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-684)[cfg.arg.navbar] = cfg.keyword.navbar_plain,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-685)[cfg.arg.state] = state,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-686)[cfg.arg.basestyle] = pargs[cfg.arg.basestyle],[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-687)[cfg.arg.title] = title,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-688)[cfg.arg.titlestyle] = titlestyle,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-689)[andnum('list', 1)] = list,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-690)[cfg.arg.liststyle] = liststyle,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-691)[cfg.arg.listclass] = pargs[andnum('listclass', n)],[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-692)[cfg.arg.image] = pargs[andnum('image', n)],[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-693)[cfg.arg.imageleft] = pargs[andnum('imageleft', n)],[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-694)[cfg.arg.listpadding] = pargs[cfg.arg.listpadding],[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-695)argHash = pargs.argHash[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-696)})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-697)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-698)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-699)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-700)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-701)-- ordering of style and bodystyle[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-702)targs[cfg.arg.style] = concatstyles({targs[cfg.arg.style] or '', targs[cfg.arg.bodystyle] or ''})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-703)targs[cfg.arg.bodystyle] = nil[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-704)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-705)-- child or subgroup[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-706)if targs[cfg.arg.border] == nil then targs[cfg.arg.border] = pargs[1] end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-707)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-708)return p._navbox(targs)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-709)end --p._withCollapsibleGroups[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-710)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-711)function p._withColumns(pargs)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-712)-- table for args passed to navbox[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-713)local targs = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-714)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-715)-- tables of column numbers[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-716)local colheadernums = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-717)local colnums = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-718)local colfooternums = {}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-719)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-720)-- process args[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-721)local passthroughLocal = {[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-722)[cfg.arg.evenstyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-723)[cfg.arg.groupstyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-724)[cfg.arg.liststyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-725)[cfg.arg.oddstyle]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-726)[cfg.arg.state]=true,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-727)}[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-728)for k,v in pairs(pargs) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-729)if passthrough[k] or passthroughLocal[k] then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-730)targs[k] = v[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-731)elseif type(k) == 'string' then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-732)if k:match(cfg.pattern.listnum) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-733)local n = k:match(cfg.pattern.listnum)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-734)targs[andnum('liststyle', n + 2)] = pargs[andnum('liststyle', n)][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-735)targs[andnum('group', n + 2)] = pargs[andnum('group', n)][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-736)targs[andnum('groupstyle', n + 2)] = pargs[andnum('groupstyle', n)][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-737)if v and inArray(cfg.keyword.subgroups, v) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-738)targs[andnum('list', n + 2)] = getSubgroup(pargs, n, v)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-739)else[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-740)targs[andnum('list', n + 2)] = v[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-741)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-742)elseif (k:match(cfg.pattern.colheadernum) and v ~= '') then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-743)table.insert(colheadernums, tonumber(k:match(cfg.pattern.colheadernum)))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-744)elseif (k:match(cfg.pattern.colnum) and v ~= '') then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-745)table.insert(colnums, tonumber(k:match(cfg.pattern.colnum)))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-746)elseif (k:match(cfg.pattern.colfooternum) and v ~= '') then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-747)table.insert(colfooternums, tonumber(k:match(cfg.pattern.colfooternum)))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-748)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-749)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-750)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-751)table.sort(colheadernums)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-752)table.sort(colnums)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-753)table.sort(colfooternums)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-754)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-755)-- HTML table for list1[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-756)local coltable = mw.html.create( 'table' ):addClass('navbox-columns-table')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-757)local row, col[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-758)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-759)local tablestyle = ( (#colheadernums > 0) or (not isblank(pargs[cfg.arg.fullwidth])) )[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-760)and 'width:100%'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-761)or 'width:auto; margin-left:auto; margin-right:auto'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-762)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-763)coltable:cssText(concatstyles({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-764)'border-spacing: 0px; text-align:left',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-765)tablestyle,[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-766)pargs[cfg.arg.coltablestyle] or ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-767)}))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-768)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-769)--- Header row ---[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-770)if (#colheadernums > 0) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-771)row = coltable:tag('tr')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-772)for k, n in ipairs(colheadernums) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-773)col = row:tag('td'):addClass('navbox-abovebelow')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-774)col:cssText(concatstyles({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-775)(k > 1) and 'border-left:2px solid #fdfdfd' or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-776)'font-weight:bold',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-777)pargs[cfg.arg.colheaderstyle] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-778)pargs[andnum('colheaderstyle', n)] or ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-779)}))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-780)col:attr('colspan', tonumber(pargs[andnum('colheadercolspan', n)]))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-781)col:wikitext(pargs[andnum('colheader', n)])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-782)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-783)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-784)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-785)--- Main columns ---[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-786)row = coltable:tag('tr'):css('vertical-align', 'top')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-787)for k, n in ipairs(colnums) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-788)if k == 1 and isblank(pargs[andnum('colheader', 1)])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-789)and isblank(pargs[andnum('colfooter', 1)])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-790)and isblank(pargs[cfg.arg.fullwidth]) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-791)local nopad = inArray([](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-792){'off', '0', '0em', '0px'},[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-793)mw.ustring.gsub(pargs[cfg.arg.padding] or '', '[;%%]', ''))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-794)if not nopad then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-795)row:tag('td'):wikitext(' ')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-796):css('width', (pargs[cfg.arg.padding] or '5em'))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-797)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-798)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-799)col = row:tag('td'):addClass('navbox-list')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-800)col:cssText(concatstyles({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-801)(k > 1) and 'border-left:2px solid #fdfdfd' or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-802)'padding:0px',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-803)pargs[cfg.arg.colstyle] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-804)((n%2 == 0) and pargs[cfg.arg.evencolstyle] or pargs[cfg.arg.oddcolstyle]) or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-805)pargs[andnum('colstyle', n)] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-806)'width:' .. (pargs[andnum('colwidth', n)] or pargs[cfg.arg.colwidth] or '10em')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-807)}))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-808)local wt = pargs[andnum('col', n)][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-809)if wt and inArray(cfg.keyword.subgroups, wt) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-810)wt = getSubgroup(pargs, n, wt, cfg.arg.col_and_num)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-811)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-812)col:tag('div'):newline():wikitext(wt):newline()[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-813)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-814)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-815)--- Footer row ---[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-816)if (#colfooternums > 0) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-817)row = coltable:tag('tr')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-818)for k, n in ipairs(colfooternums) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-819)col = row:tag('td'):addClass('navbox-abovebelow')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-820)col:cssText(concatstyles({[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-821)(k > 1) and 'border-left:2px solid #fdfdfd' or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-822)'font-weight:bold',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-823)pargs[cfg.arg.colfooterstyle] or '',[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-824)pargs[andnum('colfooterstyle', n)] or ''[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-825)}))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-826)col:attr('colspan', tonumber(pargs[andnum('colfootercolspan', n)]))[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-827)col:wikitext(pargs[andnum('colfooter', n)])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-828)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-829)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-830)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-831)-- assign table to list1[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-832)targs[andnum('list', 1)] = tostring(coltable)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-833)if isblank(pargs[andnum('colheader', 1)]) [](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-834)and isblank(pargs[andnum('col', 1)])[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-835)and isblank(pargs[andnum('colfooter', 1)]) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-836)targs[andnum('list', 1)] = targs[andnum('list', 1)] ..[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-837)cfg.category.without_first_col[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-838)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-839)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-840)-- Other parameters[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-841)targs[cfg.arg.border] = pargs[cfg.arg.border] or pargs[1][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-842)targs[cfg.arg.evenodd] = (not isblank(pargs[cfg.arg.evenodd])) and pargs[cfg.arg.evenodd] or nil[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-843)targs[cfg.arg.list1padding] = '0px'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-844)targs[andnum('liststyle', 1)] = 'background:transparent;color:inherit;'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-845)targs[cfg.arg.style] = concatstyles({pargs[cfg.arg.style], pargs[cfg.arg.bodystyle]})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-846)targs[cfg.arg.tracking] = 'no'[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-847)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-848)return p._navbox(targs)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-849)end --p._withColumns[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-850)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-851)-- Template entry points[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-852)function p.navbox (frame, boxtype)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-853)local function readArgs(args, prefix)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-854)-- Read the arguments in the order they'll be output in, to make references[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-855)-- number in the right order.[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-856)local _[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-857)_ = args[prefix .. cfg.arg.title][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-858)_ = args[prefix .. cfg.arg.above][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-859)-- Limit this to 20 as covering 'most' cases (that's a SWAG) and because[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-860)-- iterator approach won't work here[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-861)for i = 1, 20 do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-862)_ = args[prefix .. andnum('group', i)][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-863)if inArray(cfg.keyword.subgroups, args[prefix .. andnum('list', i)]) then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-864)for _, v in ipairs(cfg.arg.subgroups_and_num) do[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-865)readArgs(args, prefix .. string.format(v, i) .. "_")[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-866)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-867)readArgs(args, prefix .. andnum('col', i) .. "_")[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-868)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-869)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-870)_ = args[prefix .. cfg.arg.below][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-871)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-872)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-873)if not getArgs then[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-874)getArgs = require(['Module:Arguments'](https://freemwiki.com/wiki/Module:Arguments)).getArgs[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-875)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-876)local args = getArgs(frame, {wrappers = {cfg.pattern[boxtype or 'navbox']}})[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-877)readArgs(args, "")[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-878)args.argHash = nil -- we shouldn't accept argHash passed from a template[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-879)args.type = args.type or cfg.keyword[boxtype][](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-880)return p['_navbox'](args)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-881)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-882)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-883)p[cfg.keyword.with_collapsible_groups] = function (frame)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-884)return p.navbox(frame, 'with_collapsible_groups')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-885)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-886)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-887)p[cfg.keyword.with_columns] = function (frame)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-888)return p.navbox(frame, 'with_columns')[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-889)end[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-890)[](https://freemwiki.com/index.php?oldid=579781&title=Module%3ANavbox#L-891)return p
Retrieved from "[https://freemwiki.com/index.php?title=Module:Navbox&oldid=579781](https://freemwiki.com/index.php?title=Module:Navbox&oldid=579781)"
* This page was last edited on 4 September 2025, at 01:16.
* Content is available under [Creative Commons Attribution-ShareAlike 4.0](https://creativecommons.org/licenses/by-sa/4.0/) unless otherwise noted. FreemWiki is operated by **FINGERPOWER DIGITAL TECHNOLOGY LLC** (Colorado, Entity ID 20221978727).
* [Privacy Policy](https://freemwiki.com/wiki/Privacy_Policy)
* [About](https://freemwiki.com/wiki/About)
* [Terms of Service](https://freemwiki.com/wiki/Terms_of_Service)
* [Mobile view](https://freemwiki.com/index.php?title=Module:Navbox&oldid=579781&mobileaction=toggle_view_mobile)