产后吃什么对身体恢复好| 腮腺炎反复发作是什么原因| 七月七是什么节日| 什么人生病从来不看医生| 减肥适合吃什么主食| 悬雍垂发炎吃什么药| 逝者如斯夫什么意思| 手汗症挂什么科| 哔哩哔哩会员有什么用| 喉咙有烧灼感吃什么药| 婚前体检都检查什么| 南京都有什么大学| 虬结什么意思| 粉饼是干什么用的| 运单号是什么| 嫩绿的什么| 悬饮是什么意思| 慰安妇什么意思| 两毛二是什么军衔| 胃动力不足是什么原因造成的| 北京有什么特产| 柯基为什么要断尾巴| 手指甲月牙代表什么| 子孙满堂是什么生肖| 什么是喜欢什么是爱| 老马识途是什么意思| 苹果a1661是什么型号| 西红柿不能跟什么一起吃| 牙龈炎吃什么药| 梦见别人家盖房子是什么意思| 或缺是什么意思| 有福是什么意思| 泌乳素高是什么原因| 汞中毒是什么症状| 封建思想是什么意思| 肚脐左侧按压疼是什么原因| 为什么有的人招蚊子| 爱叶有什么作用和功效| 多囊卵巢综合征是什么意思| 两个吉念什么| 长期不过性生活有什么危害| 血色病是什么病| 丢是什么意思| 红斑狼疮是什么症状| 什么叫双相障碍| 吃什么对肝脏有好处能养肝| 川字属于五行属什么| 杂酱面用什么面| 未分类结晶偏高是什么意思| 儿童吃手指是什么原因| 梦到怀孕生孩子是什么意思| 2026年属什么生肖| 无缘无故流鼻血是什么原因| 兔子是什么意思| 柠檬苦是什么原因| 什么烧鸭子好吃| 伏特加是用什么酿造的| 吃毓婷有什么副作用| 膝盖小腿酸软无力是什么原因| 什么是自锁| 心脏t波改变吃什么药| 呕气是什么意思| 女人吃洋葱有什么好处| 溃疡是什么| 霉菌性阴道炎用什么药好得快| 不吃肉对身体有什么影响| 吃葡萄皮有什么好处| 信必可是什么药| 看望病人买什么东西好| 女人吃什么补月牙最快| 心宽是什么意思| 唾液酸苷酶阳性是什么意思| 嗳气是什么原因引起的| pgi2在医学是什么意思| 女性腰疼应该挂什么科| 不敢苟同是什么意思| 失眠吃什么中药| 2.8是什么星座| 为什么不建议小孩吃罗红霉素| 高铁动车有什么区别| 早上起床眼睛浮肿是什么原因| 3月21日什么星座| 怎么知道自己五行属什么| 什么是腺样体| 白皮书是什么意思| 预警是什么意思| psv医学是什么意思| 老打瞌睡犯困是什么原因| 什么牛肉最好吃| 细胞是什么| 胆囊炎用什么药| sma是什么| 梦见很多小孩是什么意思| 有什么黄色网站| 威海的海是什么海| 下巴长痣代表什么| 双鱼座最配什么星座| 洪都拉斯为什么不与中国建交| 总是睡不着觉是什么原因| mpr是什么意思| 甲状腺结节吃什么水果好| 收割是什么意思| 糜烂性胃炎吃什么药效果好| 吃什么补胰腺最好| 志五行属什么| swissmade是什么意思| 附件炎有什么症状| 水土不服吃什么药管用| 津液亏虚是什么意思| 干细胞有什么作用| facebook是什么意思| 风化是什么意思| 八六年属什么| 珎是什么意思| 八个月宝宝可以吃什么水果| 张飞穿针歇后语下一句是什么| mophie是什么牌子| 寸脉弱是什么原因| 蔷薇色是什么颜色| 什么是干眼症| 后背发麻是什么原因| 四眼狗有什么迷信说法| 手癣是什么原因引起的| 血管瘤是什么东西| 非你莫属是什么意思| 炒菜用什么锅最好| 秉着是什么意思| 会阴是什么部位| 什么是食品添加剂| 为什么会得湿疹| 12朵玫瑰代表什么意思| 缺少电解质有什么症状| 肺主治节是什么意思| 三唑仑是什么药| 1987年属什么今年多大| 失去自我是什么意思| 什么人不能吃狗肉| 劈腿是什么意思| 喝绿茶对身体有什么好处| kr是什么货币| AUx是什么品牌| mbti测试是什么| 强迫症有什么症状| 胃糜烂吃什么药效果好| 椰浆是什么| 溜肉段用什么肉| 桑枝是什么| 冢字的意思是什么| 瘤变是什么意思| 夕阳无限好只是近黄昏是什么意思| 少叙痣是什么意思| 松露是什么| 层出不穷什么意思| 痘痘破了涂什么药膏| 做照影是检查什么| 老人大便失禁是什么原因| 脚脖子疼是什么原因| dp是什么| 什么是食品安全| 闪卡是什么意思| 桑叶泡水喝有什么功效| 心率过快吃什么药最好| 什么回忆| 恶露是什么样子的图片| 读书心得是什么意思| 吃螃蟹不能吃什么| 母仪天下是什么意思| 画饼充饥是什么意思| 做糖耐是检查什么| 腋下有异味是什么原因| 什么是乳腺增生| 克服是什么意思| 黄帝叫什么名字| 骨髓不造血是什么病| 暹什么意思| exo什么意思| 邓超是什么星座| 仕女图是什么意思| 玫瑰花和什么一起泡水喝好| 针眼是什么原因引起的| 蛋白粉什么时候吃效果最好| 呲牙是什么意思| 什么什么千山| 减持是什么意思| 肚子胀气吃什么好| 男人右眼皮跳是什么预兆| 迁移宫是什么意思| 脖子疼是什么原因引起的| 不自觉是什么意思| 白肉是指什么肉| 10月什么星座| 收缩压低是什么原因| 男孩什么时辰出生最好| 公务员什么时候退休| 手抖是什么病的预兆| 白醋泡脚有什么效果| 一月二十五号是什么星座| 什么穿针大眼瞪小眼| 脑溢血有什么症状| 螳螂吃什么| 两小无猜是什么生肖| 以身相许是什么意思| 有缘无分是什么意思| 人类什么时候灭绝| 耸是什么意思| 猫能看到什么颜色| sla是什么| 两个人可以玩什么| 晓五行属什么| 胃窦是什么| 尿的颜色有点红褐色是什么原因| 心肌受损会出现什么症状| 朱砂属于五行属什么| 77是什么意思| 江湖是什么| 肾病钾高吃什么食物好| 撅眼是什么原因造成的| 喷的右边念什么| 什么是肺磨玻璃结节| 泌乳素高有什么影响| 考妣是什么意思| 食管炎吃什么药最好| 狗篮子什么意思| 肌酐高可以吃什么水果| 梦见自己给自己理发是什么意思| 备孕需要吃什么| 属虎的幸运色是什么颜色| 老爷是什么意思| national是什么牌子| 有所作为的意思是什么| 田螺姑娘是什么意思| 水压低用什么花洒| 血管堵塞吃什么好| 一什么睡莲| 大马士革是什么意思| 胆红素高是怎么回事有什么危害| 抗缪勒氏管激素是检查什么的| 鼻窦炎的症状是什么| 小肠火吃什么药效果快| 秋葵补什么| 什么可以驱蛇| 直径是什么意思| bearbrick熊为什么贵| 埃及法老是什么意思| 亚瑟士和鬼冢虎的区别是什么| 内痔疮吃什么药最好| 停车坐爱枫林晚中的坐是什么意思| 经方是什么意思| 北京古代叫什么| 第一次表白送什么花| 成吉思汗属什么生肖| 印堂在什么位置| 11月7号是什么星座| 蜂王浆有什么好处| 高考300分能上什么大学| 左氧氟沙星治什么| 什么名字最霸气| 容易饿是什么原因| 肺间质纤维化是什么病| 反复发烧挂什么科| 急性前列腺炎吃什么药| 金字旁加巨念什么| edc是什么| 脖子肿大是什么病的症状| 百度Jump to content

四维空间是什么

Permanently protected module
Frae Wikipedia, the free beuk o knawledge
百度 戴森产品都挺贵,就连收入不错的小白领想买都得好好盘算一下,毕竟买了小半个月工资就没了……但很多人还是成为了戴森的拥趸——作为“消费升级”风潮的代表产品,成为戴森的用户能让你的生活质量提高一大截……还是值得的。
local p = {}
local navbar = require('Module:Navbar')._navbar
local cfg = mw.loadData('Module:Navbox/configuration')
local getArgs -- lazily initialized
local args
local format = string.format

local function striped(wikitext, border)
	-- Return wikitext with markers replaced for odd/even striping.
	-- Child (subgroup) navboxes are flagged with a category that is removed
	-- by parent navboxes. The result is that the category shows all pages
	-- where a child navbox is not contained in a parent navbox.
	local orphanCat = cfg.category.orphan
	if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then
		-- No change; striping occurs in outermost navbox.
		return wikitext .. orphanCat
	end
	local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part
	if args[cfg.arg.evenodd] then
		if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then
			first, second = second, first
		else
			first = args[cfg.arg.evenodd]
			second = first
		end
	end
	local changer
	if first == second then
		changer = first
	else
		local index = 0
		changer = function (code)
			if code == '0' then
				-- Current occurrence is for a group before a nested table.
				-- Set it to first as a valid although pointless class.
				-- The next occurrence will be the first row after a title
				-- in a subgroup and will also be first.
				index = 0
				return first
			end
			index = index + 1
			return index % 2 == 1 and first or second
		end
	end
	local regex = orphanCat:gsub('([%[%]])', '%%%1')
	return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count
end

local function processItem(item, nowrapitems)
	if item:sub(1, 2) == '{|' then
		-- Applying nowrap to lines in a table does not make sense.
		-- Add newlines to compensate for trim of x in |parm=x in a template.
		return '\n' .. item ..'\n'
	end
	if nowrapitems == cfg.keyword.nowrapitems_yes then
		local lines = {}
		for line in (item .. '\n'):gmatch('([^\n]*)\n') do
			local prefix, content = line:match('^([*:;#]+)%s*(.*)')
			if prefix and not content:match(cfg.pattern.nowrap) then
				line = format(cfg.nowrap_item, prefix, content)
			end
			table.insert(lines, line)
		end
		item = table.concat(lines, '\n')
	end
	if item:match('^[*:;#]') then
		return '\n' .. item ..'\n'
	end
	return item
end

-- we will want this later when we want to add tstyles for hlist/plainlist
local function has_navbar()
	return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off
		and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain
		and (
			args[cfg.arg.name]
			or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '')
				~= cfg.pattern.navbox
		)
end

local function renderNavBar(titleCell)
	if has_navbar() then
		titleCell:wikitext(navbar{
			[cfg.navbar.name] = args[cfg.arg.name],
			[cfg.navbar.mini] = 1,
			[cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' ..
				(args[cfg.arg.titlestyle] or '') ..
				';background:none transparent;border:none;box-shadow:none;padding:0;'
		})
	end

end

local function renderTitleRow(tbl)
	if not args[cfg.arg.title] then return end

	local titleRow = tbl:tag('tr')

	local titleCell = titleRow:tag('th'):attr('scope', 'col')

	local titleColspan = 2
	if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end
	if args[cfg.arg.image] then titleColspan = titleColspan + 1 end

	titleCell
		:cssText(args[cfg.arg.basestyle])
		:cssText(args[cfg.arg.titlestyle])
		:addClass(cfg.class.navbox_title)
		:attr('colspan', titleColspan)

	renderNavBar(titleCell)

	titleCell
		:tag('div')
			-- id for aria-labelledby attribute
			:attr('id', mw.uri.anchorEncode(args[cfg.arg.title]))
			:addClass(args[cfg.arg.titleclass])
			:css('font-size', '114%')
			:css('margin', '0 4em')
			:wikitext(processItem(args[cfg.arg.title]))
end

local function getAboveBelowColspan()
	local ret = 2
	if args[cfg.arg.imageleft] then ret = ret + 1 end
	if args[cfg.arg.image] then ret = ret + 1 end
	return ret
end

local function renderAboveRow(tbl)
	if not args[cfg.arg.above] then return end

	tbl:tag('tr')
		:tag('td')
			:addClass(cfg.class.navbox_abovebelow)
			:addClass(args[cfg.arg.aboveclass])
			:cssText(args[cfg.arg.basestyle])
			:cssText(args[cfg.arg.abovestyle])
			:attr('colspan', getAboveBelowColspan())
			:tag('div')
				-- id for aria-labelledby attribute, if no title
				:attr('id', args[cfg.arg.title] and nil or mw.uri.anchorEncode(args[cfg.arg.above]))
				:wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems]))
end

local function renderBelowRow(tbl)
	if not args[cfg.arg.below] then return end

	tbl:tag('tr')
		:tag('td')
			:addClass(cfg.class.navbox_abovebelow)
			:addClass(args[cfg.arg.belowclass])
			:cssText(args[cfg.arg.basestyle])
			:cssText(args[cfg.arg.belowstyle])
			:attr('colspan', getAboveBelowColspan())
			:tag('div')
				:wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems]))
end

local function renderListRow(tbl, index, listnum, listnums_size)
	local row = tbl:tag('tr')

	if index == 1 and args[cfg.arg.imageleft] then
		row
			:tag('td')
				:addClass(cfg.class.noviewer)
				:addClass(cfg.class.navbox_image)
				:addClass(args[cfg.arg.imageclass])
				:css('width', '1px')               -- Minimize width
				:css('padding', '0 2px 0 0')
				:cssText(args[cfg.arg.imageleftstyle])
				:attr('rowspan', listnums_size)
				:tag('div')
					:wikitext(processItem(args[cfg.arg.imageleft]))
	end

	local group_and_num = format(cfg.arg.group_and_num, listnum)
	local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum)
	if args[group_and_num] then
		local groupCell = row:tag('th')

		-- id for aria-labelledby attribute, if lone group with no title or above
		if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then
			groupCell
				:attr('id', mw.uri.anchorEncode(args[cfg.arg.group1]))
		end

		groupCell
			:attr('scope', 'row')
			:addClass(cfg.class.navbox_group)
			:addClass(args[cfg.arg.groupclass])
			:cssText(args[cfg.arg.basestyle])
			-- If groupwidth not specified, minimize width
			:css('width', args[cfg.arg.groupwidth] or '1%')

		groupCell
			:cssText(args[cfg.arg.groupstyle])
			:cssText(args[groupstyle_and_num])
			:wikitext(args[group_and_num])
	end

	local listCell = row:tag('td')

	if args[group_and_num] then
		listCell
			:addClass(cfg.class.navbox_list_with_group)
	else
		listCell:attr('colspan', 2)
	end

	if not args[cfg.arg.groupwidth] then
		listCell:css('width', '100%')
	end

	local rowstyle  -- usually nil so cssText(rowstyle) usually adds nothing
	if index % 2 == 1 then
		rowstyle = args[cfg.arg.oddstyle]
	else
		rowstyle = args[cfg.arg.evenstyle]
	end

	local list_and_num = format(cfg.arg.list_and_num, listnum)
	local listText = args[list_and_num]
	local oddEven = cfg.marker.oddeven
	if listText:sub(1, 12) == '</div><table' then
		-- Assume list text is for a subgroup navbox so no automatic striping for this row.
		oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part
	end

	local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum)
	local listclass_and_num = format(cfg.arg.listclass_and_num, listnum)
	listCell
		:css('padding', '0')
		:cssText(args[cfg.arg.liststyle])
		:cssText(rowstyle)
		:cssText(args[liststyle_and_num])
		:addClass(cfg.class.navbox_list)
		:addClass(cfg.class.navbox_part .. oddEven)
		:addClass(args[cfg.arg.listclass])
		:addClass(args[listclass_and_num])
		:tag('div')
			:css('padding',
				(index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em'
			)
			:wikitext(processItem(listText, args[cfg.arg.nowrapitems]))

	if index == 1 and args[cfg.arg.image] then
		row
			:tag('td')
				:addClass(cfg.class.noviewer)
				:addClass(cfg.class.navbox_image)
				:addClass(args[cfg.arg.imageclass])
				:css('width', '1px')               -- Minimize width
				:css('padding', '0 0 0 2px')
				:cssText(args[cfg.arg.imagestyle])
				:attr('rowspan', listnums_size)
				:tag('div')
					:wikitext(processItem(args[cfg.arg.image]))
	end
end

-- uses this now to make the needHlistCategory correct
-- to use later for when we add list styles via navbox
local function has_list_class(htmlclass)
	local class_args = { -- rough order of probability of use
		cfg.arg.bodyclass, cfg.arg.listclass, cfg.arg.aboveclass,
		cfg.arg.belowclass, cfg.arg.titleclass, cfg.arg.navboxclass,
		cfg.arg.groupclass, cfg.arg.imageclass
	}
	local patterns = {
		'^' .. htmlclass .. '$',
		'%s' .. htmlclass .. '$',
		'^' .. htmlclass .. '%s',
		'%s' .. htmlclass .. '%s'
	}
	
	for _, arg in ipairs(class_args) do
		for _, pattern in ipairs(patterns) do
			if mw.ustring.find(args[arg] or '', pattern) then
				return true
			end
		end
	end
	return false
end

local function needsHorizontalLists(border)
	if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then
		return false
	end
	return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist)
end

local function hasBackgroundColors()
	for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle,
		cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do
		if tostring(args[key]):find('background', 1, true) then
			return true
		end
	end
	return false
end

local function hasBorders()
	for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle,
		cfg.arg.abovestyle, cfg.arg.belowstyle}) do
		if tostring(args[key]):find('border', 1, true) then
			return true
		end
	end
	return false
end

local function isIllegible()
	local styleratio = require('Module:Color contrast')._styleratio
	for key, style in pairs(args) do
		if tostring(key):match(cfg.pattern.style) then
			if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then
				return true
			end
		end
	end
	return false
end

local function getTrackingCategories(border)
	local cats = {}
	if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end
	if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end
	if isIllegible() then table.insert(cats, cfg.category.illegible) end
	if hasBorders() then table.insert(cats, cfg.category.borders) end
	return cats
end

local function renderTrackingCategories(builder, border)
	local title = mw.title.getCurrentTitle()
	if title.namespace ~= 10 then return end -- not in template space
	local subpage = title.subpageText
	if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox
		or subpage == cfg.keyword.subpage_testcases then return end

	for _, cat in ipairs(getTrackingCategories(border)) do
		builder:wikitext('[[Category:' .. cat .. ']]')
	end
end

local function renderMainTable(border, listnums)
	local tbl = mw.html.create('table')
		:addClass(cfg.class.nowraplinks)
		:addClass(args[cfg.arg.bodyclass])

	local state = args[cfg.arg.state]
	if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then
		if state == cfg.keyword.state_collapsed then
			state = cfg.class.collapsed
		end
		tbl
			:addClass(cfg.class.collapsible)
			:addClass(state or cfg.class.autocollapse)
	end

	tbl:css('border-spacing', 0)
	if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then
		tbl
			:addClass(cfg.class.navbox_subgroup)
			:cssText(args[cfg.arg.bodystyle])
			:cssText(args[cfg.arg.style])
	else  -- regular navbox - bodystyle and style will be applied to the wrapper table
		tbl
			:addClass(cfg.class.navbox_inner)
			:css('background', 'transparent')
			:css('color', 'inherit')
	end
	tbl:cssText(args[cfg.arg.innerstyle])

	renderTitleRow(tbl)
	renderAboveRow(tbl)
	local listnums_size = #listnums
	for i, listnum in ipairs(listnums) do
		renderListRow(tbl, i, listnum, listnums_size)
	end
	renderBelowRow(tbl)

	return tbl
end

local function add_navbox_styles()
	local frame = mw.getCurrentFrame()
	-- This is a lambda so that it doesn't need the frame as a parameter
	local function add_user_styles(templatestyles)
		if templatestyles and templatestyles ~= '' then
			return frame:extensionTag{
				name = 'templatestyles', args = { src = templatestyles }
			}
		end
		return ''
	end

	-- get templatestyles. load base from config so that Lua only needs to do
	-- the work once of parser tag expansion
	local base_templatestyles = cfg.templatestyles
	local templatestyles = add_user_styles(args[cfg.arg.templatestyles])
	local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles])

	-- The 'navbox-styles' div exists for two reasons:
	--  1. To wrap the styles to work around T200206 more elegantly. Instead
	--     of combinatorial rules, this ends up being linear number of CSS rules.
	--  2. To allow MobileFrontend to rip the styles out with 'nomobile' such that
	--     they are not dumped into the mobile view.
	return mw.html.create('div')
		:addClass(cfg.class.navbox_styles)
		:addClass(cfg.class.nomobile)
		:wikitext(base_templatestyles .. templatestyles .. child_templatestyles)
		:done()
end

function p._navbox(navboxArgs)
	args = navboxArgs
	local listnums = {}

	for k, _ in pairs(args) do
		if type(k) == 'string' then
			local listnum = k:match(cfg.pattern.listnum)
			if listnum then table.insert(listnums, tonumber(listnum)) end
		end
	end
	table.sort(listnums)

	local border = mw.text.trim(args[cfg.arg.border] or args[1] or '')
	if border == cfg.keyword.border_child then
		border = cfg.keyword.border_subgroup
	end

	-- render the main body of the navbox
	local tbl = renderMainTable(border, listnums)

	local res = mw.html.create()
	-- render the appropriate wrapper for the navbox, based on the border param

	if border == cfg.keyword.border_none then
		res:node(add_navbox_styles())
		local nav = res:tag('div')
			:attr('role', 'navigation')
			:node(tbl)
		-- aria-labelledby title, otherwise above, otherwise lone group
		if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1]
			and not args[cfg.arg.group2]) then
			nav:attr(
				'aria-labelledby',
				mw.uri.anchorEncode(
					args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]
				)
			)
		else
			nav:attr('aria-label', cfg.aria_label)
		end
	elseif border == cfg.keyword.border_subgroup then
		-- We assume that this navbox is being rendered in a list cell of a
		-- parent navbox, and is therefore inside a div with padding:0em 0.25em.
		-- We start with a </div> to avoid the padding being applied, and at the
		-- end add a <div> to balance out the parent's </div>
		res
			:wikitext('</div>')
			:node(tbl)
			:wikitext('<div>')
	else
		res:node(add_navbox_styles())
		local nav = res:tag('div')
			:attr('role', 'navigation')
			:addClass(cfg.class.navbox)
			:addClass(args[cfg.arg.navboxclass])
			:cssText(args[cfg.arg.bodystyle])
			:cssText(args[cfg.arg.style])
			:css('padding', '3px')
			:node(tbl)
		-- aria-labelledby title, otherwise above, otherwise lone group
		if args[cfg.arg.title] or args[cfg.arg.above]
			or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then
			nav:attr(
				'aria-labelledby',
				mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1])
			)
		else
			nav:attr('aria-label', cfg.aria_label)
		end
	end

	if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then
		renderTrackingCategories(res, border)
	end
	return striped(tostring(res), border)
end

function p.navbox(frame)
	if not getArgs then
		getArgs = require('Module:Arguments').getArgs
	end
	args = getArgs(frame, {wrappers = {cfg.pattern.navbox}})

	-- Read the arguments in the order they'll be output in, to make references
	-- number in the right order.
	local _
	_ = args[cfg.arg.title]
	_ = args[cfg.arg.above]
	-- Limit this to 20 as covering 'most' cases (that's a SWAG) and because
	-- iterator approach won't work here
	for i = 1, 20 do
		_ = args[format(cfg.arg.group_and_num, i)]
		_ = args[format(cfg.arg.list_and_num, i)]
	end
	_ = args[cfg.arg.below]

	return p._navbox(args)
end

return p
尿酸高能吃什么水果 爱我永不变是什么歌 骨强度不足是什么原因 梦见鬼是什么意思 pu皮是什么材质
温州人为什么会做生意 副团长是什么军衔 突然耳朵聋是什么原因 有尿意但是尿不出来是什么原因 梦见一个人说明什么
中秋送什么 产后第一天吃什么最好 为老不尊是什么意思 hpy什么意思 肋间神经痛用什么药
说话声音小是什么原因 六月中旬是什么时候 什么是沉香木 胎盘什么时候形成 什么子孙
第一次坐飞机要注意什么hcv8jop2ns0r.cn 上火有什么症状hcv9jop6ns1r.cn 妮是什么意思hcv8jop8ns7r.cn 机关党委是干什么的hcv7jop5ns0r.cn 梦见打老公是什么意思hcv9jop2ns0r.cn
挂科什么意思hcv9jop5ns8r.cn cy什么意思hcv9jop1ns5r.cn 窦性心律不齐什么意思hcv8jop1ns7r.cn 做梦梦到自己拉屎是什么意思sanhestory.com 正常的包皮什么样子hcv9jop5ns7r.cn
吃辣椒过敏是什么症状youbangsi.com 肠胃胀气是什么原因hcv9jop5ns8r.cn 一什么冰雹zhongyiyatai.com 甲功能5项检查是查的什么hcv9jop1ns1r.cn 女性睾酮低意味着什么hcv8jop4ns4r.cn
善莫大焉什么意思hcv9jop2ns6r.cn 吃什么补阳气最快hcv9jop1ns3r.cn 体重什么时候称最准确bfb118.com 牙龈肿痛用什么药好得快hcv8jop2ns6r.cn 钾高是什么原因造成的hcv9jop4ns6r.cn
百度