面瘫是什么| 小腹痛是什么原因| 升米恩斗米仇什么意思| 肺栓塞挂什么科| 什么木头做菜板好| 仙茅配什么壮阳效果好| 耳朵里痒是什么原因| 梦见车丢了是什么征兆| 牙齿上有黑点是什么原因| 布朗是什么水果| 胃反流吃什么药| 江西有什么好玩的地方| 自律性是什么意思| 为什么要长征| 食管反流吃什么药| 可颂是什么意思| 一什么凤冠| 做活检前要注意什么| 姜文和姜武是什么关系| 左边头疼是什么原因怎么办| 生物工程专业学什么| 小孩记忆力差需要补充什么营养| 吃什么解腻| 总是拉肚子是什么原因| 狗狗身上有皮肤病用什么药| 子母门是什么意思| 身上发抖是什么原因| 2岁什么都听懂但不说话| cue什么意思| 一个合一个页读什么| 寄生虫长什么样| 大便暗红色是什么原因| 援交什么意思| 望而生畏什么意思| 腰眼疼是什么原因引起的| 已加一笔是什么字| 天门冬氨酸氨基转移酶是什么| 为什么拉屎会有血| UFS是什么意思| 大便溏薄是什么意思| 化石是什么| 产后第一次来月经是什么颜色| 血脂高胆固醇高吃什么食物最好| 狗不能吃什么食物| 芋头是什么季节的| 足外翻挂什么科| 三个贝念什么| 眉毛浓的男人代表什么| 疙瘩是什么意思| 阴道润滑剂什么牌子好| 弃市是什么意思| 属兔的和什么属相最配| 一箭双雕是指什么生肖| 什么猫| 天眼是什么意思| 男人眼角有痣代表什么| 口爆是什么| 朱字五行属什么| 茹什么饮什么| 为什么打雷闪电| 身份证拍照穿什么衣服| 指南针为什么不叫指北针| 眼底照相是检查什么| 米是什么结构| 多云是什么意思| spo2过低是什么意思| 手脚出汗是什么原因| 银屑病是什么症状| 查颈椎挂什么科| 娟五行属什么| 疤痕体质是什么原因| 无冕之王是什么意思| 粑粑是什么意思| vk是什么意思| 空窗期是什么| 党委常委是什么级别| 3d打印是什么意思| igg抗体阳性是什么意思| 梦见自己头发长长了是什么意思| 为什么日语怎么说| 咸鸭蛋为什么会出油| 书香门第的书香指什么| 一直头疼是什么原因| 下午四点多是什么时辰| 代价什么意思| 右边脸疼是什么原因| 67年属什么生肖| 阵雨是什么意思| 手掌发黄是什么原因| 生孩子前要注意什么| 男性生殖器叫什么| 生牛乳是什么意思| 什么是甲状腺| 晕车吃什么能缓解| gr是什么单位| 嘴唇起泡用什么药| 老司机什么意思| mic什么意思| 5月4日是什么星座| 胆小怕事是什么生肖| 3岁宝宝流鼻血是什么原因| 每次上大便都出血是什么原因| 萝莉控是什么意思| five是什么意思| 什么是新陈代谢| 腺肌症吃什么食物好| 任性妄为是什么意思| 私生是什么意思| 什么时候测量血压最准确| 众所周知是什么生肖| 1991年什么命| 莱特兄弟发明了什么| 什么是脑卒中| 吃的多拉的少是什么原因| 低盐饮食有利于预防什么| 耳鸣是什么病引起的| 牙疼去医院挂什么科| 5月24日是什么星座| 平均血小板体积偏高是什么原因| 杨梅有什么功效和作用| 什么是人乳头瘤病毒| 坐月子能吃什么菜| 你代表什么意思| 蔻驰包属于什么档次| 洁面液是干什么用的| 胎位lop是什么意思| 三百年前是什么朝代| 活检和穿刺有什么区别| zw是什么意思| 96122是什么电话| 下午四点多是什么时辰| trab是甲状腺什么指标| 二郎神是什么动物| 你喜欢我什么| 尿不出尿是什么原因| 苏打水是什么水| 电瓶车充不进电是什么原因| 生孩子大出血是什么原因造成的| 治霉菌性阴炎用什么药好得快| 什么是舍利| 什么的尘土| 肠炎可以吃什么水果| 螺丝吃什么| 拉烂屎是什么原因| cheese是什么意思| 垂体瘤是什么病| 太虚是什么意思| 7月24日是什么日子| 早上八点多是什么时辰| 脑垂体在什么位置图片| 如火如荼什么意思| 什么叫人工智能| 大便是红色的是什么原因| 神经元特异性烯醇化酶是什么意思| 螺旋杆菌有什么症状| 什么鸡没有翅膀| 伴侣是什么意思| 带状疱疹能吃什么| 妈妈的堂哥叫什么| 老年人脚肿是什么原因| 儿童超敏c反应蛋白高说明什么| 肚子胀气老放屁是什么原因| 前列腺增生吃什么药| 尿酸高适合吃什么水果| ed2k用什么下载| 笔名是什么意思| 左侧头疼是什么原因| 自作多情是什么意思| 甲状腺毒症是什么意思| 眼皮黑是什么原因| 血管变窄吃什么能改善| 孕妇喝什么水比较好| 和女生聊天聊什么| 风热感冒吃什么药最好| 国际劳动日是什么生肖| 黑眼圈看什么科| 安徽有什么特色美食| 铁树开花是什么生肖| 项羽的马叫什么名字| 老年人贫血吃什么补血最快最有效| 怀女孩有什么征兆| 血脂高适合吃什么食物| 梦见自己穿孝衣有什么征兆| 郑和下西洋是什么朝代| 肠镜挂什么科| 眼睛红血丝多是什么原因| 嘴发酸是什么原因引起| 一线天是什么意思| 无什么| 老年人腿脚无力是什么原因| 危险期是什么时候| 母亲吃什么退婴儿黄疸| 56年属什么| 水肿吃什么消肿最快| 什么是气质| 每天喝一杯豆浆有什么好处| 玛丽苏什么意思| honor是什么牌子的手机| 年底是什么时候| 湿肺是什么意思| 什么时候征兵| 农历6月20日是什么星座| 香椿是什么| ACG是什么牌子| 女性私处为什么会变黑| 咽喉炎是什么症状| 铁低的原因是什么| 鸡飞狗跳是指什么生肖| 耄耋之年是什么意思| 口腔上火了吃什么降火最快| 大肠杆菌属于什么菌| 生动是什么意思| 美女的阴暗是什么样的| 男性下体瘙痒用什么药| 衣衫褴褛是什么意思| 72年属什么的生肖| 为什么会得hpv| 阴虱卵长什么样图片| 乱伦是什么| 植物神经紊乱挂什么科| 灶王爷叫什么名字| 吃什么可以化掉息肉| 梦见请客吃饭是什么意思| 血管钙化是什么意思| 血压高吃什么水果好| 老公梦见蛇是什么预兆| close是什么意思| 身上长白色的斑点是什么原因| 共工是什么神| 二月份出生的是什么星座| 保持器是什么| 6月17什么星座| 什么是设计| 626是什么日子| 吃什么排出全身毒素| 什么狗不如| 痔疮挂什么科室| 人为什么会做梦科学解释| 什么叫美尼尔综合症| 心脏缺血吃什么补的快| 徒然是什么意思| 男性夜间盗汗什么原因| efg是什么意思| 汐五行属性是什么| 赤者念什么| 铁是什么颜色的| 什么是忧郁症| 丙氨酸氨基转移酶高吃什么药| 新生儿为什么有黄疸| 毛拉是什么意思| 性激素检查是查什么| 手指甲软薄吃什么补| ot什么意思| 贫血是什么意思| 两融是什么意思| 月经来了有血块是什么原因| no2是什么| 黄褐色是什么颜色| 一个不一个好念什么| 结肠炎吃什么药治疗效果好| hrv是什么| 茶叶水洗脸有什么好处| 为什么手心总是出汗| 钢笔ef尖是什么意思| 百度Мазм?н?а ?ту

发布未来战略 看北汽昌河如何转型重生

Уикипедия — ашы? энциклопедиясынан алын?ан м?л?мет
09:02, 2023 ж. ?азанны? 1 кез?ндег? Amangeldi Mukhamejan (тал?ылау?| ?лес?) жаса?ан н?с?а
(айырма) ← Еск?рек н?с?а?| Со??ы н?с?а (айырма)?| Жа?ара? н?с?а → (айырма)
百度 6月30日以来,长江中下游沿江地区及江淮、西南东部等地出现入汛以来最强降雨过程,给部分地区造成严重洪涝灾害。

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
大好河山是什么生肖 女鼠配什么属相最好 小孩吃什么补脑更聪明 pgi是什么意思 世界上最可怕的动物是什么
宫寒吃什么药 经常呕吐是什么原因 四季豆不能和什么一起吃 骨盆倾斜有什么症状 沉网和浮网有什么区别
疣是什么病毒 吃亏是什么意思 ifound是什么牌子 二月九号是什么星座 甲沟炎什么症状
萎缩性胃炎是什么原因引起的 借条和欠条有什么区别 什么是辛辣食物 清酒是什么酒 排异反应是什么意思
年底是什么时候hcv7jop6ns3r.cn 为什么打牌老输hcv8jop7ns4r.cn 长溃疡是缺什么维生素hcv9jop3ns7r.cn 食管反流用什么药效果好hcv9jop4ns4r.cn 乌龟和鳖有什么区别luyiluode.com
电器着火用什么灭火器hcv7jop9ns7r.cn 什么原因造成低血糖hcv9jop4ns9r.cn 壁虎是什么类动物hcv9jop5ns1r.cn 葡萄补什么hcv9jop4ns5r.cn 肺结节看什么科hcv9jop5ns7r.cn
睡觉翻白眼是什么原因hcv9jop2ns7r.cn 肾气不足吃什么中成药hcv8jop1ns0r.cn 区人大代表是什么级别hcv8jop1ns6r.cn 背上长痘痘擦什么药膏shenchushe.com 预防脑梗用什么药效果好hcv8jop0ns5r.cn
炸油条用什么油最好hcv8jop2ns2r.cn 黄体期出血是什么原因hcv9jop4ns3r.cn 直肠炎是什么原因引起hcv9jop1ns3r.cn 赘是什么意思hcv8jop1ns4r.cn 脂肪肝是什么引起的hcv9jop1ns9r.cn
百度