乳房钙化灶是什么意思| 巴基斯坦人说什么语言| 前列腺增大伴钙化是什么意思| 凤凰单丛茶属于什么茶| 大便不调是什么意思| 广州机场叫什么名字| unny是什么牌子| 氯丙嗪是什么药| 什么叫阴虱| 骨量偏高是什么原因| 什么是隐私| 套路是什么意思| 脏器灰阶立体成像是检查什么的| 震撼是什么意思| 胚胎和囊胚有什么区别| 入肉是什么字| 非那雄胺片是什么药| 妇科检查清洁度3度什么意思| 下套什么意思| 12月14日是什么星座| 双子座是什么象星座| 悲观是什么意思| 码放是什么意思| 血热皮肤瘙痒吃什么药| 名媛是什么| 普通感冒吃什么药| 儿童缺铁吃什么补得快| 艾灸是什么东西| h5是什么意思| 子宫肌瘤有什么症状| 阴囊潮湿吃什么中成药| 心动过缓吃什么药| 反流性食管炎吃什么药好| 吃什么药补肾| 冠带什么意思| 男性吃什么可以壮阳| 发小是什么| 什么是液化| 疾控中心是做什么的| 肝脾不和吃什么中成药| 欲钱知吃月饼是什么生肖| 肛周脓肿吃什么消炎药| 中统和军统有什么区别| 梦到女朋友出轨是什么意思| 蛇最怕什么药| 怀孕血压高对胎儿有什么影响| 肉瘤是什么| 磷脂是什么东西| 彩礼什么时候给女方| 贫乳是什么意思| 西瓜可以做什么饮料| 区块链是什么| 9月24号什么星座| 属兔五行属什么| 失能是什么意思| 补钙过量有什么害处| 重阳节是干什么的| 打呼噜挂什么科| 京东积分有什么用| 睾丸长什么样子| 血压高可以吃什么水果| 尿道感染是什么原因引起的| 血栓吃什么药化得快| 牡丹王是什么茶| 鹅喜欢吃什么草| 排骨炖什么好吃又有营养| 七月六号是什么星座| 朱顶红什么时候开花| 热天不出汗是什么原因| zfc是什么牌子| 15度穿什么| 沙眼用什么眼药水| 苦肠是什么部位| 退而求其次什么意思| 九月十五日是什么星座| 倒反天罡是什么意思| 身体不适是什么意思| 特药是什么意思| 10月15号是什么星座| 车字旁有什么字| 虚火旺吃什么去火最快| 手脚发热吃什么药| 什么是假性自闭症| 特别怕热爱出汗是什么原因| 附件是什么| 宇宙的尽头是什么| 口舌痣是什么意思| 智力是什么意思| 支气管炎用什么药| 冬瓜有什么功效| 咖色是什么颜色| 属猴的守护神是什么菩萨| 日进斗金什么意思| 眼睛肿胀是什么原因| 喉咙干咳吃什么药| 吃什么药可以推迟月经| 蝗虫用什么呼吸| 小孩积食发烧吃什么药| 贫血要做什么检查| 三个箭头朝下是什么牌子| 夏天适合吃什么| 闻字五行属什么| 小缺血灶是什么意思| 未免是什么意思| 北极熊的毛是什么颜色的| 蓬蒿人是什么意思| 直爽是什么意思| 芒果和什么相克| 舞是什么结构| 什么的口罩| 猫能吃什么| 梦到吃饭是什么意思| 黄什么| 什么叫情绪| 胎儿顶臀长是什么意思| 庸俗是什么意思| 副军级是什么级别| 痰涎壅盛是什么意思| 嘴巴长疱疹用什么药| 卡哇伊内是什么意思| 指甲开裂是什么原因| 梦见黄鼠狼是什么意思| 扛幡是什么意思| 开颅手术有什么后遗症| 西药是用什么材料做的| 呆若木鸡的意思是什么| 吃南瓜有什么好处| 湿气重有什么表现症状| 地球属于什么星系| 排卵试纸强阳说明什么| crp高是什么感染| 黑玫瑰代表什么意思| 三晋是什么意思| 纤维瘤挂什么科| 野猪怕什么颜色| 雪蛤是什么| eicu是什么意思| 牙龈和牙齿分离是什么原因| 冲奶粉用什么水比较好| 什么原因导致打嗝| 腹胀腹痛吃什么药| 电离辐射是指什么| 鲶鱼吃什么食物| 梦到自行车丢了是什么意思| 张国立的老婆叫什么名字| 虾皮有什么营养价值| 什么是g大调| 生姜红糖水有什么作用| 油菜是什么菜| b型血阳性是什么意思| 清宫和人流有什么区别| 核磁共振和ct有什么区别| 牙槽骨吸收是什么意思| 盘古是一个什么样的人| 为什么一躺下就头晕目眩| 孵化基地是什么意思| 低烧是什么原因引起的| 口臭舌苔白厚吃什么药| 碳水化合物对人体有什么作用| 孩子低烧吃什么药| 物理学是什么| 阴唇为什么会长痘痘| 92年属猴的是什么命| 什么原因导致子宫内膜息肉| 糖尿病的人可以吃什么水果| 脑血管痉挛吃什么药| 睫毛炎有什么症状| 着床出血是什么样子的| pco2是什么意思| 怀孕十天有什么反应| aba是什么意思| 红肠是什么| 梦见自己死了预示什么| 子宫肌瘤吃什么药好| 没有精液是什么原因| 金鸡报晓是什么意思| 拔罐挂什么科| 绝对零度是什么意思| 水银中毒会出现什么状况| 晚上血压高是什么原因| ccu是什么意思| 王是什么生肖| 亥时右眼跳是什么预兆| 西瓜禁忌和什么一起吃| 刷屏是什么意思| 诸位是什么意思| 花对什么| 什么人容易怀葡萄胎| 批捕意味着什么| 吃什么降肝火| 7月29日是什么星座| 旗人是什么意思| 4月29号0点是什么时候| 米糠是什么东西| 12月16是什么星座| 属鸡的和什么属相最配| 终止妊娠是什么意思| 什么牌子的助听器最好| 硬膜囊前缘受压是什么意思| 毛主席为什么不进故宫| 小孩下半夜咳嗽是什么原因| 阴虱病是什么原因引起的| 尿路感染是什么症状| 进国企需要什么条件| 牙套什么年龄戴合适| 苏联是什么国家| 7月八号是什么星座| 喝椰子粉有什么好处| 孔雀鱼吃什么| 猪肚炖什么好吃| 摘胆对身体有什么影响| 812是什么意思| 爱爱是什么感觉| 怀孕周期是从什么时候开始算的| 什么叫糖化血红蛋白| 血液由什么和什么组成| 拮抗剂是什么| 鞭挞是什么意思| 静对什么| 出水痘不能吃什么食物| 玩微博的都是什么人| 补气养血吃什么中成药| 鳖吃什么| 私事是什么意思| 主食都有什么| hc是胎儿的什么| 72年属什么生肖属相| ch表示什么意思| 文化大革命什么时候结束| ab型和ab型生的孩子是什么血型| 酉是什么字| 氮泵是什么| 芈月和秦始皇什么关系| 跑步后尿血是什么情况| miffy是什么意思| 无条件是什么意思| 晚睡早起是什么原因| 上火喉咙痛吃什么药| 一什么山泉| 相知是什么意思| 脑血栓有什么症状| 黄色分泌物是什么原因| 西西里的美丽传说讲的什么| 小case是什么意思| sorona是什么面料| 舌头有裂纹是什么病| 尿素氮肌酐比值偏高是什么原因| 马中赤兔人中吕布什么意思| 什么宽带网速快又便宜| 新发展理念是什么| 马冲什么生肖| 欧多桑是什么意思| 跳空缺口是什么意思| 腰椎膨出是什么意思| 说话快的人什么性格| 四个火念什么| 小腹疼是什么原因| 冰箱保鲜室不制冷是什么原因| 为什么玉镯不能戴左手| 非经期少量出血是什么原因| 无创什么时候出结果| 王八是什么| 政法委是干什么的| 绿茶喝多了有什么危害| 百度Pumunta sa nilalaman

舌苔厚黄是什么病

Mula sa Wikipedia, ang malayang ensiklopedya
百度 看起来她对大真的是情有独钟啊,不仅是特别大的天价翡翠,收藏蜜蜡那也必须是最大的,之前看到她捧着胸前的大蜜蜡的照片,讲真,都有点担心她会不会觉得脖子酸。
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = ''
local has_rows = false

local function fixChildBoxes(sval, tt)
	local function notempty( s ) return s and s:match( '%S' ) end
	
	if notempty(sval) then
		local marker = '<span class=special_infobox_marker>'
		local s = sval
		-- start moving templatestyles and categories inside of table rows
		local slast = ''
		while slast ~= s do
			slast = s
			s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
			s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
		end
		-- end moving templatestyles and categories inside of table rows
		s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
		s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
		if s:match(marker) then
			s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
			s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
			s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
			s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
			s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
			s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
			s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
			s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
			s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
		end
		if s:match(marker) then
			local subcells = mw.text.split(s, marker)
			s = ''
			for k = 1, #subcells do
				if k == 1 then
					s = s .. subcells[k] .. '</' .. tt .. '></tr>'
				elseif k == #subcells then
					local rowstyle = ' style="display:none"'
					if notempty(subcells[k]) then rowstyle = ''	end
					s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
						subcells[k]
				elseif notempty(subcells[k]) then
					if (k % 2) == 0 then
						s = s .. subcells[k]
					else
						s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
							subcells[k] .. '</' .. tt .. '></tr>'
					end
				end
			end
		end
		-- the next two lines add a newline at the end of lists for the PHP parser
		-- [[Special:Diff/849054481]]
		-- remove when [[:phab:T191516]] is fixed or OBE
		s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
		s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
		s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
		s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
		return s
	else
		return sval
	end
end

-- Cleans empty tables
local function cleanInfobox()
	root = tostring(root)
	if has_rows == false then
		root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
	end
end

-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)

	local vals = {}
	for k, v in pairs(t1) do
		vals[v] = true
	end
	for k, v in pairs(t2) do
		vals[v] = true
	end
	local ret = {}
	for k, v in pairs(vals) do
		table.insert(ret, k)
	end
	return ret
end

-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix)
	local nums = {}
	for k, v in pairs(args) do
		local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
		if num then table.insert(nums, tonumber(num)) end
	end
	table.sort(nums)
	return nums
end

-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
	
	if rowArgs.header and rowArgs.header ~= '_BLANK_' then
		has_rows = true
		root
			:tag('tr')
				:addClass(rowArgs.rowclass)
				:cssText(rowArgs.rowstyle)
				:tag('th')
					:attr('colspan', '2')
					:addClass('infobox-header')
					:addClass(rowArgs.class)
					:addClass(args.headerclass)
					-- @deprecated next; target .infobox-<name> .infobox-header
					:cssText(args.headerstyle)
					:cssText(rowArgs.rowcellstyle)
					:wikitext(fixChildBoxes(rowArgs.header, 'th'))
		if rowArgs.data then
			root:wikitext(
				'[[Category:Pages using infobox templates with ignored data cells]]'
			)
		end
	elseif rowArgs.data and rowArgs.data:gsub(
			category_in_empty_row_pattern, ''
		):match('^%S') then
		has_rows = true
		local row = root:tag('tr')
		row:addClass(rowArgs.rowclass)
		row:cssText(rowArgs.rowstyle)
		if rowArgs.label then
			row
				:tag('th')
					:attr('scope', 'row')
					:addClass('infobox-label')
					-- @deprecated next; target .infobox-<name> .infobox-label
					:cssText(args.labelstyle)
					:cssText(rowArgs.rowcellstyle)
					:wikitext(rowArgs.label)
					:done()
		end

		local dataCell = row:tag('td')
		dataCell
			:attr('colspan', not rowArgs.label and '2' or nil)
			:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
			:addClass(rowArgs.class)
			-- @deprecated next; target .infobox-<name> .infobox(-full)-data
			:cssText(rowArgs.datastyle)
			:cssText(rowArgs.rowcellstyle)
			:wikitext(fixChildBoxes(rowArgs.data, 'td'))
	else
		table.insert(empty_row_categories, rowArgs.data or '')
	end
end

local function renderTitle()
	if not args.title then return end

	has_rows = true
	root
		:tag('caption')
			:addClass('infobox-title')
			:addClass(args.titleclass)
			-- @deprecated next; target .infobox-<name> .infobox-title
			:cssText(args.titlestyle)
			:wikitext(args.title)
end

local function renderAboveRow()
	if not args.above then return end

	has_rows = true
	root
		:tag('tr')
			:tag('th')
				:attr('colspan', '2')
				:addClass('infobox-above')
				:addClass(args.aboveclass)
				-- @deprecated next; target .infobox-<name> .infobox-above
				:cssText(args.abovestyle)
				:wikitext(fixChildBoxes(args.above,'th'))
end

local function renderBelowRow()
	if not args.below then return end

	has_rows = true
	root
		:tag('tr')
			:tag('td')
				:attr('colspan', '2')
				:addClass('infobox-below')
				:addClass(args.belowclass)
				-- @deprecated next; target .infobox-<name> .infobox-below
				:cssText(args.belowstyle)
				:wikitext(fixChildBoxes(args.below,'td'))
end

local function addSubheaderRow(subheaderArgs)
	if subheaderArgs.data and
		subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
		has_rows = true
		local row = root:tag('tr')
		row:addClass(subheaderArgs.rowclass)

		local dataCell = row:tag('td')
		dataCell
			:attr('colspan', '2')
			:addClass('infobox-subheader')
			:addClass(subheaderArgs.class)
			:cssText(subheaderArgs.datastyle)
			:cssText(subheaderArgs.rowcellstyle)
			:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
	else
		table.insert(empty_row_categories, subheaderArgs.data or '')
	end
end

local function renderSubheaders()
	if args.subheader then
		args.subheader1 = args.subheader
	end
	if args.subheaderrowclass then
		args.subheaderrowclass1 = args.subheaderrowclass
	end
	local subheadernums = getArgNums('subheader')
	for k, num in ipairs(subheadernums) do
		addSubheaderRow({
			data = args['subheader' .. tostring(num)],
			-- @deprecated next; target .infobox-<name> .infobox-subheader
			datastyle = args.subheaderstyle,
			rowcellstyle = args['subheaderstyle' .. tostring(num)],
			class = args.subheaderclass,
			rowclass = args['subheaderrowclass' .. tostring(num)]
		})
	end
end

local function addImageRow(imageArgs)

	if imageArgs.data and
		imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then

		has_rows = true
		local row = root:tag('tr')
		row:addClass(imageArgs.rowclass)

		local dataCell = row:tag('td')
		dataCell
			:attr('colspan', '2')
			:addClass('infobox-image')
			:addClass(imageArgs.class)
			:cssText(imageArgs.datastyle)
			:wikitext(fixChildBoxes(imageArgs.data, 'td'))
	else
		table.insert(empty_row_categories, imageArgs.data or '')
	end
end

local function renderImages()
	if args.image then
		args.image1 = args.image
	end
	if args.caption then
		args.caption1 = args.caption
	end
	local imagenums = getArgNums('image')
	for k, num in ipairs(imagenums) do
		local caption = args['caption' .. tostring(num)]
		local data = mw.html.create():wikitext(args['image' .. tostring(num)])
		if caption then
			data
				:tag('div')
					:addClass('infobox-caption')
					-- @deprecated next; target .infobox-<name> .infobox-caption
					:cssText(args.captionstyle)
					:wikitext(caption)
		end
		addImageRow({
			data = tostring(data),
			-- @deprecated next; target .infobox-<name> .infobox-image
			datastyle = args.imagestyle,
			class = args.imageclass,
			rowclass = args['imagerowclass' .. tostring(num)]
		})
	end
end

-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
	if not args.autoheaders then return end
	
	local rownums = union(getArgNums('header'), getArgNums('data'))
	table.sort(rownums)
	local lastheader
	for k, num in ipairs(rownums) do
		if args['header' .. tostring(num)] then
			if lastheader then
				args['header' .. tostring(lastheader)] = nil
			end
			lastheader = num
		elseif args['data' .. tostring(num)] and
			args['data' .. tostring(num)]:gsub(
				category_in_empty_row_pattern, ''
			):match('^%S') then
			local data = args['data' .. tostring(num)]
			if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
				lastheader = nil
			end
		end
	end
	if lastheader then
		args['header' .. tostring(lastheader)] = nil
	end
end

-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()

	local rownums = union(getArgNums('header'), getArgNums('data'))
	table.sort(rownums)
	for k, num in ipairs(rownums) do
		addRow({
			header = args['header' .. tostring(num)],
			label = args['label' .. tostring(num)],
			data = args['data' .. tostring(num)],
			datastyle = args.datastyle,
			class = args['class' .. tostring(num)],
			rowclass = args['rowclass' .. tostring(num)],
			-- @deprecated next; target .infobox-<name> rowclass
			rowstyle = args['rowstyle' .. tostring(num)],
			rowcellstyle = args['rowcellstyle' .. tostring(num)]
		})
	end
end

local function renderNavBar()
	if not args.name then return end

	has_rows = true
	root
		:tag('tr')
			:tag('td')
				:attr('colspan', '2')
				:addClass('infobox-navbar')
				:wikitext(require('Module:Navbar')._navbar{
					args.name,
					mini = 1,
				})
end

local function renderItalicTitle()
	local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
	if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
		root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))
	end
end

-- Categories in otherwise empty rows are collected in empty_row_categories.
-- This function adds them to the module output. It is not affected by
-- args.decat because this module should not prevent module-external categories
-- from rendering.
local function renderEmptyRowCategories()
	for _, s in ipairs(empty_row_categories) do
		root:wikitext(s)
	end
end

-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
	if args.decat == 'yes' then return end
	if args.child == 'yes' then
		if args.title then
			root:wikitext(
				'[[Category:Pages using embedded infobox templates with the title parameter]]'
			)
		end
	elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
		root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
	end
end

--[=[
Loads the templatestyles for the infobox.

TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.

]=]
local function loadTemplateStyles()
	local frame = mw.getCurrentFrame()
	
	-- See function description
	local base_templatestyles = frame:extensionTag{
		name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
	}

	local templatestyles = ''
	if args['templatestyles'] then templatestyles = frame:extensionTag{
			name = 'templatestyles', args = { src = args['templatestyles'] }
		}
	end
	
	local child_templatestyles = ''
	if args['child templatestyles'] then child_templatestyles = frame:extensionTag{
			name = 'templatestyles', args = { src = args['child templatestyles'] }
		}
	end
	
	local grandchild_templatestyles = ''
	if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{
			name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
		}
	end

	return table.concat({
		base_templatestyles, -- see function description
		templatestyles,
		child_templatestyles,
		grandchild_templatestyles
	})
end

-- common functions between the child and non child cases
local function structure_infobox_common()
	renderSubheaders()
	renderImages()
	preprocessRows()
	renderRows()
	renderBelowRow()
	renderNavBar()
	renderItalicTitle()
	renderEmptyRowCategories()
	renderTrackingCategories()
	cleanInfobox()
end

-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
	if args.child ~= 'yes' then
		root = mw.html.create('table')

		root
			:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
			:addClass(args.bodyclass)
			-- @deprecated next; target .infobox-<name>
			:cssText(args.bodystyle)

		renderTitle()
		renderAboveRow()
	else
		root = mw.html.create()

		root
			:wikitext(args.title)
	end
	structure_infobox_common()
	
	return loadTemplateStyles() .. root
end

-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
	if origArgs[argName] and origArgs[argName] ~= '' then
		args[argName] = origArgs[argName]
	end
end

-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
	if type(prefixTable) ~= 'table' then
		error("Non-table value detected for the prefix table", 2)
	end
	if type(step) ~= 'number' then
		error("Invalid step value detected", 2)
	end

	-- Get arguments without a number suffix, and check for bad input.
	for i,v in ipairs(prefixTable) do
		if type(v) ~= 'table' or type(v.prefix) ~= "string" or
			(v.depend and type(v.depend) ~= 'table') then
			error('Invalid input detected to preprocessArgs prefix table', 2)
		end
		preprocessSingleArg(v.prefix)
		-- Only parse the depend parameter if the prefix parameter is present
		-- and not blank.
		if args[v.prefix] and v.depend then
			for j, dependValue in ipairs(v.depend) do
				if type(dependValue) ~= 'string' then
					error('Invalid "depend" parameter value detected in preprocessArgs')
				end
				preprocessSingleArg(dependValue)
			end
		end
	end

	-- Get arguments with number suffixes.
	local a = 1 -- Counter variable.
	local moreArgumentsExist = true
	while moreArgumentsExist == true do
		moreArgumentsExist = false
		for i = a, a + step - 1 do
			for j,v in ipairs(prefixTable) do
				local prefixArgName = v.prefix .. tostring(i)
				if origArgs[prefixArgName] then
					-- Do another loop if any arguments are found, even blank ones.
					moreArgumentsExist = true
					preprocessSingleArg(prefixArgName)
				end
				-- Process the depend table if the prefix argument is present
				-- and not blank, or we are processing "prefix1" and "prefix" is
				-- present and not blank, and if the depend table is present.
				if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
					for j,dependValue in ipairs(v.depend) do
						local dependArgName = dependValue .. tostring(i)
						preprocessSingleArg(dependArgName)
					end
				end
			end
		end
		a = a + step
	end
end

-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()

	preprocessSingleArg('autoheaders')
	preprocessSingleArg('child')
	preprocessSingleArg('bodyclass')
	preprocessSingleArg('subbox')
	preprocessSingleArg('bodystyle')
	preprocessSingleArg('title')
	preprocessSingleArg('titleclass')
	preprocessSingleArg('titlestyle')
	preprocessSingleArg('above')
	preprocessSingleArg('aboveclass')
	preprocessSingleArg('abovestyle')
	preprocessArgs({
		{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
	}, 10)
	preprocessSingleArg('subheaderstyle')
	preprocessSingleArg('subheaderclass')
	preprocessArgs({
		{prefix = 'image', depend = {'caption', 'imagerowclass'}}
	}, 10)
	preprocessSingleArg('captionstyle')
	preprocessSingleArg('imagestyle')
	preprocessSingleArg('imageclass')
	preprocessArgs({
		{prefix = 'header'},
		{prefix = 'data', depend = {'label'}},
		{prefix = 'rowclass'},
		{prefix = 'rowstyle'},
		{prefix = 'rowcellstyle'},
		{prefix = 'class'}
	}, 50)
	preprocessSingleArg('headerclass')
	preprocessSingleArg('headerstyle')
	preprocessSingleArg('labelstyle')
	preprocessSingleArg('datastyle')
	preprocessSingleArg('below')
	preprocessSingleArg('belowclass')
	preprocessSingleArg('belowstyle')
	preprocessSingleArg('name')
	-- different behaviour for italics if blank or absent
	args['italic title'] = origArgs['italic title']
	preprocessSingleArg('decat')
	preprocessSingleArg('templatestyles')
	preprocessSingleArg('child templatestyles')
	preprocessSingleArg('grandchild templatestyles')
end

-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
	if frame == mw.getCurrentFrame() then
		origArgs = frame:getParent().args
	else
		origArgs = frame
	end
	
	parseDataParameters()
	
	return _infobox()
end

-- For calling via #invoke within a template
function p.infoboxTemplate(frame)
	origArgs = {}
	for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
	
	parseDataParameters()
	
	return _infobox()
end
return p
心律不齐是什么症状 早搏应该吃什么药 毒龙钻是什么 什么是干细胞 车震是什么意思啊
9.24是什么星座 今天是什么节气24节气 口腔溃疡什么药最管用 什么手机拍照效果最好 铁树开花什么意思
宫颈肥大伴纳氏囊肿是什么意思 眼睛一直跳是什么原因 立秋是什么时候 书五行属性是什么 大枣和红枣有什么区别
星星为什么会眨眼 走仕途是什么意思 三省吾身是什么意思 糖类抗原高是什么意思 血糖高喝什么酒好
什么对什么hcv8jop3ns5r.cn 吃什么健脾胃除湿气hcv8jop2ns8r.cn 尿崩症是什么意思hcv9jop5ns0r.cn 什么是正骨hcv8jop9ns4r.cn 梦见涨洪水是什么兆头adwl56.com
1024是什么星座bjhyzcsm.com 肘是什么意思hcv9jop6ns8r.cn 你要什么hcv7jop9ns9r.cn 颌下腺肿大是什么原因hcv8jop7ns9r.cn 骨质增生吃什么药效果好hcv9jop0ns9r.cn
硬不起来吃什么药hcv9jop2ns0r.cn 太爷爷的爸爸叫什么hcv8jop9ns4r.cn 前位子宫和后位子宫有什么区别hcv9jop2ns8r.cn 婴儿大便有泡沫是什么原因hanqikai.com 什么是追溯码hcv9jop1ns8r.cn
地三鲜是什么hcv9jop1ns9r.cn 甲胄是什么意思hcv7jop4ns5r.cn 阳痿是什么意思mmeoe.com 11月出生是什么星座wuhaiwuya.com 数字5代表什么意思hcv8jop6ns2r.cn
百度