420是什么意思| 吃什么食物能降低胆固醇| 心脏不好吃什么| 阿咖酚散是什么药| 盆腔炎吃什么药好| 祸害是什么意思| 舅舅的孙子叫我什么| 为什么会缺乏维生素d| 什么是尿素| 什么人容易老年痴呆| 明朝为什么会灭亡| 什么病会引起皮肤瘙痒| 双手发抖是什么原因| 厉兵秣马是什么意思| 火文念什么| 水肿吃什么药消肿最快| 补血吃什么药| 胸口痛吃什么药| 胆固醇是什么东西| 下午茶是什么意思| 什么东西蛋白质最高| 公务员什么时候退休| 办理港澳通行证需要什么材料| 女人切除子宫有什么影响| 起早贪黑是什么生肖| 内膜厚是什么原因引起的| 牙齿冷热都疼是什么原因| 减肥晚餐吃什么好| 土克什么| 后腰左侧疼痛是什么原因男性| 蛞蝓是什么| 皮肤是什么组织| 吴字五行属什么| 韩语阿西吧是什么意思| 喝什么茶清肺效果最好| 胃疼应该挂什么科| 嘴边长痘痘是什么原因| 梦见战争是什么兆头| 什么是阴历什么是阳历| 包皮炎是什么症状| 中医湿气重是什么意思| b超是查什么的| 女人吃什么最补子宫| 什么牌子洗面奶好用| 十二月二号是什么星座| 脸颊两侧长斑是什么原因怎么调理| w是什么单位| 化气行水是什么意思| 右肩膀和胳膊疼痛是什么原因| 多五行属什么| 电头是什么| 非转基因是什么意思| 仰卧起坐有什么好处| 炒菜勾芡用什么淀粉| 汗疱疹涂什么药| 吃什么补钾最快| 内热是什么原因引起的怎么调理| 阿米巴病是什么病| 冬至夏至什么意思| 什么原因引起尿路感染| 氢氧化钠是什么| 什么人什么天| 6月30日是什么节日| 接吻是什么感觉| 脚麻木是什么病的前兆| 血糖高的人早餐吃什么好| 钙果是什么水果| 眼胀是什么原因| 苏打水有什么好处| 头发掉是什么原因引起的| 大大是什么意思| 9岁属什么生肖| 电解质氯高是什么原因| 灰姑娘叫什么名字| 做什么事要从头来| 早上起床眼睛浮肿是什么原因| 1950年属虎的是什么命| pms是什么| 什么饭不能吃| 塔姆是什么动物| 败血症是什么症状| 莼菜是什么菜| 工作坊是什么意思| 月子里头疼是什么原因| 胆汁反流是什么原因| 伤官见官是什么意思| 5.20是什么星座| 女性喝什么茶最好| 沙悟净是什么生肖| 老舍原名是什么| 1893年属什么| 乐果农药适合杀什么虫| 英语四级什么时候报名| 梦见相亲是什么征兆| 锁水是什么意思| 头顶痛是什么原因| pci是什么意思| 浅粉色配什么颜色好看| 高大尚是什么意思| 偷窥什么意思| 做酸菜鱼用什么鱼| 男性囊肿是什么原因引起的| 脱相是什么意思| 未时是什么时候| 站桩有什么好处| 什么心什么肺| 夏天吃什么菜| 淋巴结核是什么病| 看脖子应该挂什么科| 什么情况吃通宣理肺丸| 胆汁为什么会反流到胃里面| 蜂蜜水什么时候喝好| 海蜇丝是什么做的| 儿童身高矮小挂什么科| 一个木一个西读什么| 梦见大狼狗是什么意思| 纳氏囊肿是什么意思| 豆豉是什么东西| 就坡下驴什么意思| 腰椎间盘突出和膨出有什么区别| 什么是癔症病| 玉和翡翠有什么区别| 脾大对身体有什么影响| 羊配什么生肖最好| m型发际线适合什么发型| 紫色裤子配什么上衣| 大姨妈一直不干净是什么原因| 安乃近是什么药| 月经什么颜色的血是正常的| 梦到喝酒是什么意思| 一个三点水一个令念什么| 海马萎缩是什么情况| ch4是什么气体| 肺ca是什么意思| 肿瘤切开了里面是什么| 女孩名字带什么字好听| 落地生根是什么生肖| siemens是什么品牌| 优甲乐是什么药| 笑字五行属什么| 秋葵炒什么好吃| 眼睛为什么会痛| 腰肌劳损是什么意思| 吃什么蔬菜对眼睛好| esrd医学上是什么意思| 黑色皮肤适合什么颜色的衣服| 茶走是什么意思| 鸡蛋壳薄是什么原因| 大黄蜂是什么车| 英国全称叫什么| 遗精频繁是什么原因| 女性适合喝什么茶| 怀孕是什么感觉| maggie是什么意思| 人总放屁是什么原因| 男戴观音女戴佛有什么讲究| 桑蚕丝被有什么好处| 胸片是检查什么的| 杨梅有什么功效与作用| 番薯是什么| 一个立一个羽是什么字| 虚是什么意思| 吃坏肚子了吃什么药| 上颌窦炎吃什么药| 双子是什么意思| 自私是什么意思| 胎位loa是什么位置| 二个月不来月经是什么原因| 苏州机场叫什么| 壬字五行属什么| 吃什么补雌激素最快| 降血脂吃什么药| 股票融是什么意思| 梦见梅花鹿是什么预兆| 站着说话不腰疼什么意思| 腰椎间盘膨出是什么意思| who是什么组织| 属牛的本命佛是什么佛| 胃炎挂什么科| ooh什么意思| 一什么斑点| 羊下面是什么生肖| 睡眠不好去医院看什么科| 树脂是什么材质| 女人总犯困是什么原因| 头晕视力模糊是什么原因| 为什么会突然吐血| 瑶字五行属什么| 降血脂吃什么药效果好| 肺炎吃什么水果好| 李宇春父亲是干什么的| 脓毒血症是什么原因引起的| 梦见别人过生日是什么意思| 纸醉金迷什么意思| 九月三日是什么日子| 粉瘤挂什么科| 梦到自己快要死了是什么意思| 荔枝可以做什么菜| 肌酐低什么原因| 拔罐拔出水泡是什么原因| 三级护理是什么意思| 什么山| 给产妇送什么礼物好| 梦见偷鸡是什么预兆| 类风湿是什么原因引起的| 人生海海是什么意思| punk什么意思| 马路杀手是什么意思| 肚子容易饿是什么原因| 蛋糕裙适合什么人穿| 什么是物理| 午时属什么生肖| 火奥念什么| 木耳菜是什么菜| 拔了牙可以吃什么| 梦到狗什么意思| fzl什么意思| 母乳是什么味道| noah是什么牌子| 为什么床上有蚂蚁| 菊花什么颜色| 额头和下巴长痘痘是什么原因| 偶发室性早搏是什么意思| 司法警察是做什么的| 篱笆是什么东西| 气血是什么意思| 反清复明的组织叫什么| 小号避孕套是什么尺寸| 国安局是干什么的| smz是什么药| 超细旦是什么面料| 2009年五行属什么| 班草是什么意思| 三价铁离子什么颜色| 前列腺炎有什么症状表现| 汗疱疹用什么药| 臆想是什么意思| 春节在什么时候| 三星是什么军衔| 细水长流是什么意思| 脑梗能吃什么| 吃什么补钙最好| 饱和脂肪是什么意思| 才华横溢是什么生肖| 梦见恐龙是什么意思| 绿色的鸟是什么鸟| 96199是什么电话| 公知是什么意思| 手指麻木是什么病的前兆| 妇科臭氧治疗的作用是什么| 劫持是什么意思| 流产后吃什么水果最佳| 穿拖鞋脚臭是什么原因| 超敏c反应蛋白高说明什么| 大便什么颜色是正常的| 7月初是什么星座| 胆木是什么| 心肌酶是什么意思| 胎儿偏小是什么原因| 质是什么意思| 骨质疏松吃什么好| 手掌痒是什么原因| ipa啤酒是指什么| 本是同根生相煎何太急是什么意思| 百度Мазм?н?а ?ту

3.《人民的名义》收视屡破纪录 张丰毅:沙...

Уикипедия — ашы? энциклопедиясынан алын?ан м?л?мет
百度 这并不是本市共有产权房项目中唯一一个遭遇组合贷难题的。

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
857什么意思 大拇指有黑色竖纹是什么原因 偏头疼挂什么科室 氧化氢是什么 粘土能做什么
升结肠憩室是什么意思 龛是什么意思 木命人五行缺什么 什么是义务兵 uv是什么意思
洗漱是什么意思 易孕期是什么时候 犹太人为什么那么聪明 水煮鱼用什么鱼 14年是什么年
柱镜是什么 什么动作可以提高性功能 血小板体积偏低是什么原因 官方什么意思 全身大面积湿疹暗示着什么
晚上吃什么不长肉hcv9jop4ns4r.cn 肝多发小囊肿什么意思hcv8jop4ns2r.cn 大小眼是什么原因hcv9jop1ns9r.cn 小孩子口臭是什么原因zhongyiyatai.com 七年之痒是什么意思hcv9jop0ns0r.cn
尚可什么意思hcv7jop9ns2r.cn 波尔多红是什么颜色hcv7jop9ns2r.cn 血糖高的人吃什么主食hcv9jop6ns2r.cn 中性粒细胞百分比高是什么原因hcv8jop2ns7r.cn 原始鳞状上皮成熟是什么意思hcv7jop6ns0r.cn
金牛座与什么星座最配hcv7jop5ns0r.cn 阴虚火旺吃什么水果hcv9jop5ns2r.cn 实体店是什么意思hcv9jop6ns5r.cn 刮痧用什么油刮最好hcv8jop5ns5r.cn 热射病是什么症状0735v.com
血糖高忌什么食物bfb118.com 哈西奈德溶液治什么病cj623037.com 大姨妈不来是什么原因造成的hcv8jop6ns9r.cn 手脚心热是什么原因hcv7jop5ns5r.cn 1975年属兔的是什么命hcv7jop9ns8r.cn
百度