阴虚湿热吃什么中成药| 餐饮sop是什么意思| 前列腺吃什么食物调理| 木耳菜又叫什么菜| 肾结石什么不能吃| 瘦人吃什么能长胖| 女人手心脚心发热是什么原因| 小酌怡情下一句是什么| 尿检白细胞阳性是什么意思| 血管病变是什么意思| 老枞水仙属于什么茶| 久违什么意思| 特需病房是什么意思| 刚拔完智齿可以吃什么| 正太是什么意思| 为什么阴道会放气| 碳素墨水用什么能洗掉| 病毒发烧吃什么药| 姝姝是什么意思| 恩泽是什么意思| 头响脑鸣是什么原因引起的| 唇炎是什么原因造成的| 青年节是什么生肖| 深谙是什么意思| 治疗肺部气肿有什么方法| 阑尾炎可以吃什么水果| 警示是什么意思| 孕妇吃什么鱼| 潴留是什么意思| qrs是什么意思| 小苏打学名叫什么| 723是什么意思| kaws是什么牌子| 补体c1q偏高说明什么| 吃什么补脾虚| zgo手表是什么牌子| 应该说什么| 为什么出汗特别多| 贫血去医院挂什么科| 玉如意什么属相不能戴| 吃什么除湿| 什么动物没有尾巴| b族维生素什么人不能吃| 2002年是什么命| 测血型挂什么科| 中国第一长洞是什么| 成人达己是什么意思| 银联是什么| 多肽是什么意思| 瘢痕体质是什么意思| 乳头瘤病毒是什么病| 打蛇打七寸是什么意思| RH是什么| 奥美拉唑有什么副作用| 徘徊什么意思| rmb是什么货币| 不知道饿是什么原因| 理数是什么| 峰会什么时候开| 洗面奶是什么意思| 什么人容易得老年痴呆| 吃什么可以降血压| 蜜蜂为什么要采蜜| 风热感冒吃什么药好| 酸奶什么时候喝最好| 今日属相是什么生肖| 腿肿吃什么药消肿最快最有效| 尿红细胞阳性什么意思| 黑色碎花裙配什么上衣| 赟读什么| 浮萍是什么植物| 尾巴长长的是什么鸟| hr是什么意思医学| 8月23是什么星座的| 吃什么东西补血| 茶话会是什么意思| 父母是o型血孩子是什么血型| ml代表什么单位| 倾字五行属什么| 5.6是什么星座| cocoon是什么意思| 为什么叫智齿| 银杏树叶子像什么| 什么去甲醛最快有效| 吃什么不长肉| 胃食管反流挂什么科| 女性阴道痒是什么原因| 为什么会肌酐高| 南瓜与什么食物相克| 苦命是什么意思| 六月八日是什么星座| 鞋油自然色是什么颜色| 过期啤酒有什么用途| 11月9日是什么星座| 农历六月初四是什么日子| 甲沟炎属于什么科| 社保缴纳基数是什么意思| 玄武是什么动物| 山东有什么特产| 小虾吃什么食物| 头皮特别痒是什么原因| 什么方法睡觉快速入睡| 漫不经心是什么意思| 女人胃寒吃什么好得快| 什么叫肠上皮化生| 什么是预科生| 颈椎病应该挂什么科| 工口是什么意思| heineken是什么啤酒| kalenji是什么品牌| 嗨体水光针有什么功效| 柠檬和什么不能一起吃| 非处方药是什么意思| eicu是什么意思| 罗红霉素和红霉素有什么区别| 男人耳朵大代表什么| 收留是什么意思| 手抖看什么科| 灵长类动物是指什么| 月经每个月都推迟是什么原因| 睡不着挂什么科| 什么是肾虚| 吃什么不会长胖| 微不足道是什么意思| 足月是什么意思| 家里为什么会有壁虎| 咳嗽吐白痰吃什么药| 两个o型血能生出什么血型的孩子| 硝石是什么| 汉尼拔是什么意思| 停职是什么意思| 什么的草叶| cpu是什么意思| 痛风是什么地方痛| 明五行属什么| 龙马精神代表什么生肖| 胎盘做成胶囊吃有什么好处| 中国人在印度属于什么种姓| 低密度脂蛋白高是什么原因| 剑桥英语和新概念英语有什么区别| 脑血栓是什么意思| 维生素b2起什么作用| 用减一笔是什么字| 魂牵梦绕是什么意思| 八点是什么时辰| 内痔是什么| 立是什么结构的字| 甜五行属什么| 范是什么意思| 身体寒湿重吃什么好| 老打嗝是什么病的前兆| 大汗淋漓什么意思| 七月八号是什么星座| 面部神经痉挛吃什么药| 什么是蓝颜知己| 陈赫什么星座| 心有灵犀什么意思| 胃疼适合吃什么食物| 什么是复句| 白雪什么| 透明的剑是什么剑| 泥鳅吃什么东西| 阿罗裤是什么意思| 什么样的野花| 空调病是什么症状| 葡萄糖属于什么糖| 脱水是什么意思| 腹腔淋巴结是什么意思| 蚊子最怕什么东西| 什么是散射光| exr是什么牌子| panadol是什么药| 肠炎有什么症状| 宫颈阳性是什么意思| 小白加小白等于什么| on是什么牌子| 牙龈红肿吃什么药| 夏天怕冷是什么原因| 金融bp是什么意思| 钟鸣鼎食是什么意思| 土鳖是什么意思| 精液偏黄是什么原因| 指甲横纹是什么原因| 胃酸吃什么食物好| 氯雷他定为什么比西替利嗪贵| 男人性功能不好吃什么药| 肠粉是用什么粉做的| 颌下腺肿大是什么原因| 为什么会长阴虱| 云南属于什么地区| 放疗后不能吃什么| 吃什么补充维生素b6| 过敏是什么原因引起的| 脑梗挂什么科室| 宋威龙什么星座| 出殡下雨是什么兆头| 治鸡眼用什么药最好| 牛蒡是什么| 松鼠喜欢吃什么食物| 松花蛋是什么蛋| 文艺范是什么意思| 健忘症是什么意思| miniso是什么意思| 什么的春天| 感悟是什么意思| 月经来了一点就没了是什么原因| 心包隐窝是什么意思| 鼓上蚤是什么意思| 危机四伏是什么生肖| 2022是什么年| 长期喝豆浆有什么好处和坏处| 什么马奔腾| 吃什么药可以提高性功能| 长期熬夜会有什么后果| 狗狗狂犬疫苗什么时候打| 例假推迟是什么原因引起的| 湖蓝色配什么颜色好看| 竹字五行属什么| 前白蛋白偏低是什么意思| 五液是指什么| 子宫内膜异位症吃什么药| 纯净水是什么水| 生殖器疱疹是什么病| 司马懿字什么| 南瓜不能和什么同吃| 不加一笔是什么字| 戾气什么意思| 河图洛书是什么意思| 74年属什么的生肖| 小分子肽能治什么病| 拔牙需要注意什么| 吸土是什么意思| 阴阳两虚吃什么| si是什么元素| 芈月和秦始皇什么关系| 吃什么能阻止性早熟| 小孩肠胃感冒吃什么药| 牙龈为什么会肿| 浅表性胃炎伴糜烂用什么药| 荨麻疹忌口什么食物| 面部提升做什么项目最好| 风湿因子高是什么原因引起的| 脚气有什么症状| 肌酐500多属于什么期怎么治疗| 四肢厥逆是什么意思| 十全十美指什么生肖| 照猫画虎什么意思| 慢性非萎缩性胃炎吃什么药| 大便隐血阴性是什么意思| 工字可以加什么偏旁| 风平浪静是什么生肖| 一眼万年是什么意思| 天秤座属于什么星象| 小朋友坐飞机需要什么证件| 尿毒症是什么病| 占卜什么意思| 吃白萝卜有什么好处| 尿酸高什么原因引起的| 肝腹水是什么症状| 与虎谋皮什么意思| 为什么冬吃萝卜夏吃姜| 玫瑰糠疹吃什么药最有效| 婴儿半夜哭闹是什么原因| 世界上最大的数是什么| 百度Мазм?н?а ?ту

中级车市场风云再起 国产第十代雅阁前瞻

Уикипедия — ашы? энциклопедиясынан алын?ан м?л?мет
百度 哔宝犹豫了好久要不要说,逾近年底,哔宝特别忙但这部剧看到20多集哔宝还是决定再忙也要说说虽然这部剧也有很多质疑声音演员年纪偏大;年代背景穿帮;但哔宝今天这篇推送还是要为它打个call,做人还有人不喜欢呢,何况剧。

Module:Infobox {{Инфобокс}} ?лг?с?н?? ж?мыс ?стеу?не ?ажет модуль. Оны ?олдану н?с?аулы?ын ?лг? бет?нен ?ара?ыз.

?лг?де ?ателер? бар беттерд? ?ада?алау санаттары


local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local lists = {
	plainlist_t = {
		patterns = {
			'^plainlist$',
			'%splainlist$',
			'^plainlist%s',
			'%splainlist%s'
		},
		found = false,
		styles = 'Plainlist/styles.css'
	},
	hlist_t = {
		patterns = {
			'^hlist$',
			'%shlist$',
			'^hlist%s',
			'%shlist%s'
		},
		found = false,
		styles = 'Hlist/styles.css'
	}
}

local function has_list_class(args_to_check)
	for _, list in pairs(lists) do
		if not list.found then
			for _, arg in pairs(args_to_check) do
				for _, pattern in ipairs(list.patterns) do
					if mw.ustring.find(arg or '', pattern) then
						list.found = true
						break
					end
				end
				if list.found then break end
			end
		end
	end
end

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 'м?т?н', 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
		has_list_class({ rowArgs.rowclass, rowArgs.class, args['та?ырыпша_класс'] })
		
		root
			:tag('tr')
				:addClass(rowArgs.rowclass)
				:cssText(rowArgs.rowstyle)
				:tag('th')
					:attr('colspan', '2')
					:addClass('infobox-header')
					:addClass(rowArgs.class)
					:addClass(args['та?ырыпша_класс'])
					-- @deprecated next; target .infobox-<name> .infobox-header
					:cssText(args['та?ырыпша_класс'])
					: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
		has_list_class({ rowArgs.rowclass, rowArgs.class })
		
		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['белг?_стиль'])
					: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['атауы'] then return end

	has_rows = true
	has_list_class({args['атауы_класс']})
	
	root
		:tag('caption')
			:addClass('infobox-title')
			:addClass(args['атауы_класс'])
			-- @deprecated next; target .infobox-<name> .infobox-title
			:cssText(args['атауы_стиль'])
			:wikitext(args['атауы'])
	
end

local function renderAboveRow()
	if not args['?ст?'] then return end

	has_rows = true
	has_list_class({ args['?ст?_класс'] })
	
	root
		:tag('tr')
			:tag('th')
				:attr('colspan', '2')
				:addClass('infobox-above')
				:addClass(args['?ст?_класс'])
				-- @deprecated next; target .infobox-<name> .infobox-above
				:cssText(args['?ст?_стиль'])
				:wikitext(fixChildBoxes(args['?ст?'],'th'))
end

local function renderBelowRow()
	if not args['асты'] then return end

	has_rows = true
	has_list_class({ args['асты_класс'] })
	
	root
		:tag('tr')
			:tag('td')
				:attr('colspan', '2')
				:addClass('infobox-below')
				:addClass(args['асты_класс'])
				-- @deprecated next; target .infobox-<name> .infobox-below
				:cssText(args['асты_стиль'])
				:wikitext(fixChildBoxes(args['асты'],'td'))
end

local function addSubheaderRow(subheaderArgs)
	if subheaderArgs.data and
		subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
		has_rows = true
		has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
		
		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['ма?дайша'] then
		args['ма?дайша1'] = args['ма?дайша']
	end
	if args['ма?дайша_жол_класс'] then
		args['ма?дайша_жол_класс1'] = args['ма?дайша_жол_класс']
	end
	local subheadernums = getArgNums('ма?дайша')
	for k, num in ipairs(subheadernums) do
		addSubheaderRow({
			data = args['ма?дайша' .. tostring(num)],
			-- @deprecated next; target .infobox-<name> .infobox-subheader
			datastyle = args['ма?дайша_стиль'],
			rowcellstyle = args['ма?дайша_стиль' .. tostring(num)],
			class = args['ма?дайша_стиль'],
			rowclass = args['ма?дайша_жол_класс' .. 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
		has_list_class({ imageArgs.rowclass, imageArgs.class })
		
		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['сурет'] then
		args['сурет1'] = args['сурет']
	end
	if args['сурет_атауы'] then
		args['сурет_атауы1'] = args['сурет_атауы']
	end
	local imagenums = getArgNums('сурет')
	for k, num in ipairs(imagenums) do
		local caption = args['сурет_атауы' .. tostring(num)]
		local data = mw.html.create():wikitext(args['сурет' .. tostring(num)])
		if caption then
			data
				:tag('div')
					:addClass('infobox-caption')
					-- @deprecated next; target .infobox-<name> .infobox-caption
					:cssText(args['сурет_атауы_стиль'])
					:wikitext(caption)
		end
		addImageRow({
			data = tostring(data),
			-- @deprecated next; target .infobox-<name> .infobox-image
			datastyle = args['сурет_стиль'],
			class = args['сурет_класс'],
			rowclass = args['сурет_жол_класс' .. tostring(num)]
		})
	end
end

-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
	if not args['автота?ырыпша'] then return end
	
	local rownums = union(getArgNums('та?ырыпша'), getArgNums('м?т?н'))
	table.sort(rownums)
	local lastheader
	for k, num in ipairs(rownums) do
		if args['та?ырыпша' .. tostring(num)] then
			if lastheader then
				args['та?ырыпша' .. tostring(lastheader)] = nil
			end
			lastheader = num
		elseif args['м?т?н' .. tostring(num)] and
			args['м?т?н' .. tostring(num)]:gsub(
				category_in_empty_row_pattern, ''
			):match('^%S') then
			local data = args['м?т?н' .. tostring(num)]
			if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
				lastheader = nil
			end
		end
	end
	if lastheader then
		args['та?ырыпша' .. 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('та?ырыпша'), getArgNums('м?т?н'))
	table.sort(rownums)
	for k, num in ipairs(rownums) do
		addRow({
			header = args['та?ырыпша' .. tostring(num)],
			label = args['белг?' .. tostring(num)],
			data = args['м?т?н' .. tostring(num)],
			datastyle = args['м?т?н_стиль'],
			class = args['класс' .. tostring(num)],
			rowclass = args['жол_класс' .. tostring(num)],
			-- @deprecated next; target .infobox-<name> rowclass
			rowstyle = args['жол_стиль' .. tostring(num)],
			rowcellstyle = args['жол_?я_стиль' .. tostring(num)]
		})
	end
end

local function renderNavBar()
	if not args['?лг?_атауы'] then return end

	has_rows = true
	root
		:tag('tr')
			:tag('td')
				:attr('colspan', '2')
				:addClass('infobox-navbar')
				:wikitext(require('Module:Navbar')._navbar{
					args['?лг?_атауы'],
					mini = 1,
				})
end

local function renderItalicTitle()
	local italicTitle = args['?и?аш атауы'] and mw.ustring.lower(args['?и?аш атауы'])
	if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
		root:wikitext(require('Module:Italic title')._main({}))
	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('м?т?н')) == 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()
	
	local hlist_templatestyles = ''
	if lists.hlist_t.found then
		hlist_templatestyles = frame:extensionTag{
			name = 'templatestyles', args = { src = lists.hlist_t.styles }
		}
	end
	
	local plainlist_templatestyles = ''
	if lists.plainlist_t.found then
		plainlist_templatestyles = frame:extensionTag{
			name = 'templatestyles', args = { src = lists.plainlist_t.styles }
		}
	end
	
	-- 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({
		-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
		-- this ordering is not a guarantee because the rows of interest invoking
		-- each class may not be on a specific page
		hlist_templatestyles,
		plainlist_templatestyles,
		base_templatestyles,
		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['дене_класс'])
			-- @deprecated next; target .infobox-<name>
			:cssText(args['дене_класс'])
		
		has_list_class({ args['дене_класс'] })

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

		root
			:wikitext(args['атауы'])
	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('автота?ырыпша')
	preprocessSingleArg('child')
	preprocessSingleArg('дене_класс')
	preprocessSingleArg('?шк?_?орап')
	preprocessSingleArg('дене_стиль')
	preprocessSingleArg('атауы')
	preprocessSingleArg('атауы_класс')
	preprocessSingleArg('атауы_стиль')
	preprocessSingleArg('?ст?')
	preprocessSingleArg('?ст?_класс')
	preprocessSingleArg('?ст?_стиль')
	preprocessArgs({
		{prefix = 'ма?дайша', depend = {'ма?дайша_стиль', 'ма?дайша_жол_класс'}}
	}, 10)
	preprocessSingleArg('ма?дайша_стиль')
	preprocessSingleArg('ма?дайша_класс')
	preprocessArgs({
		{prefix = 'сурет', depend = {'сурет_атауы', 'сурет_жол_класс'}}
	}, 10)
	preprocessSingleArg('сурет_атауы_стиль')
	preprocessSingleArg('сурет_стиль')
	preprocessSingleArg('сурет_класс')
	preprocessArgs({
		{prefix = 'та?ырыпша'},
		{prefix = 'м?т?н', depend = {'белг?'}},
		{prefix = 'жол_класс'},
		{prefix = 'жол_стиль'},
		{prefix = 'жол_?я_стиль'},
		{prefix = 'класс'}
	}, 50)
	preprocessSingleArg('та?ырыпша_класс')
	preprocessSingleArg('та?ырыпша_стиль')
	preprocessSingleArg('белг?_стиль')
	preprocessSingleArg('м?т?н_стиль')
	preprocessSingleArg('асты')
	preprocessSingleArg('асты_класс')
	preprocessSingleArg('асты_стиль')
	preprocessSingleArg('?лг?_атауы')
	-- different behaviour for italics if blank or absent
	args['?и?аш атауы'] = origArgs['?и?аш атауы']
	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
红斑狼疮复发的症状是什么 营养神经吃什么药效果好 蚂蚁的触角有什么作用 乐的五行属性是什么 玄青色是什么颜色
上将是什么级别 什么是公因数 偷窥是什么意思 蒙氏结节是什么 手爆皮是什么原因
耳聋吃什么药 什么是天丝面料 bearbrick熊为什么贵 什么地腐烂 女士喝什么茶叶对身体好
只要睡觉就做梦是什么原因 ads是什么意思 牙齿痛吃什么药最管用 dv是什么牌子 cd56阳性是什么意思
起湿疹是什么原因造成的hcv9jop1ns1r.cn 痛风不能吃什么水果hcv9jop1ns6r.cn 牙疼吃什么消炎药最好hcv9jop0ns5r.cn 内热吃什么药清热解毒hcv8jop1ns6r.cn 孕期吃什么长胎不长肉hcv8jop2ns5r.cn
反法西斯是什么意思jinxinzhichuang.com 藿香正气水治疗什么病dajiketang.com 咳嗽一直不好什么原因hcv9jop4ns0r.cn 高风亮节是什么意思hcv8jop4ns7r.cn 血压低会出现什么症状fenrenren.com
mic是什么意思hcv8jop3ns9r.cn 胆囊息肉是什么意思hcv9jop4ns4r.cn mri是什么意思xinjiangjialails.com 梦女是什么意思hcv9jop6ns8r.cn 用盐水洗脸有什么好处和坏处naasee.com
外婆菜是什么菜hcv9jop6ns9r.cn 儿童吃什么hcv8jop0ns4r.cn 凌晨两点半是什么时辰hcv7jop7ns4r.cn 公租房是什么hcv8jop6ns6r.cn 容颜是什么意思hcv8jop4ns7r.cn
百度