感冒全身酸痛吃什么药| 胎盘能吃吗有什么作用与功效| fm什么意思| 咽喉炎有什么症状| 肝病初期有什么症状| 梦见着火了是什么征兆| 病理性骨折是什么意思| 什么工作挣钱多| 双职工是什么意思| 亏电是什么意思| 玛雅文明是古代什么文明的代表| 食欲亢进是什么意思| 为什么会牙痛| 口若悬什么| 尿酸低吃什么| 宠辱不惊是什么意思| 师姐是什么意思| 血小板计数高是什么原因| 子宫粘连是什么原因引起的| 溥仪为什么没有生育能力| rm什么意思| 海东青是什么| 喝酒不能吃什么| 亲嘴什么感觉| 这是什么车| 轮回什么意思| 8月2日是什么星座| 扒灰什么意思| 亡羊补牢的亡是什么意思| 生动是什么意思| 2027年属什么生肖| 后背疼是什么病的前兆| 睡觉被口水呛醒是什么原因| 梦见青蛙是什么预兆| 阳春是什么意思| 子宫切除对女人有什么影响| 陆家嘴为什么叫陆家嘴| 什么是日记| cp感什么意思| 一什么雨伞| 心脏彩超主要检查什么| 音乐制作人是干什么的| 什么手机性价比高| 舌头起泡吃什么药| 人体缺钙吃什么补最快| cp感什么意思| 蛟龙是什么| 铁蛋白是查什么的| 游手好闲是什么意思| 宁字五行属什么的| 隐翅虫皮炎用什么药膏| 血糖高吃什么好能降糖| 五味子不适合什么人喝| 谷丙转氨酶偏低是什么意思| 急性咽炎吃什么药| 限高什么意思| mcu是什么| 小白鼠是什么意思| 缠头是什么意思| 6月14号是什么星座| 十二月十二日是什么星座| 83年属什么| 基础油是什么油| 什么叫动脉硬化| 大陆去台湾需要什么手续| 胃溃疡能吃什么| 2023年属什么| 甲状腺结节吃什么食物好| 月经推迟什么原因引起的| 雌激素是什么东西| 彩超挂什么科| 高血压吃什么药好| 什么病误诊为帕金森| 神夫草抑菌乳膏主治什么| 春晓的晓是什么意思| 自变量是什么| 电子商务学什么| 套话是什么意思| 半月板退变是什么意思| 急性肠胃炎能吃什么| mama是什么意思| 多巴胺什么意思| 香港身份证有什么好处| 特异性生长因子指什么| 水清则无鱼什么意思| 40周年是什么婚| 腿抽筋是什么原因造成的| 喝豆浆有什么好处和坏处| 声带小结是什么意思| 什么病才吃阿昔洛韦片| 送什么礼物给女老师| 坪效是什么意思| 集少两撇是什么字| 原位癌是什么意思| 做梦梦到男朋友出轨了是什么意思| 吃什么容易上火| 什么是我的| 16 5是什么码| ngu是什么意思| 财鱼是什么鱼| 尿液中粘液丝高是什么原因| 喝醋对身体有什么好处| 梦见好多人是什么意思| 为什么总是头晕| 心跳过速是什么原因| 蜂蜜什么人不能吃| 肠胃不好吃什么药| 血淀粉酶是查什么的| 什么是病原体| 哺乳期吃什么下奶| 不自主的摇头是什么病| 附件炎吃什么药好| 扁桃体1度肿大是什么意思| 什么美白效果最好最快| 嗓子突然哑了是什么原因引起的| 梦见过生日是什么意思| 指奸是什么意思| 肺气不足吃什么药| 白酒是什么时候出现的| 爱字五行属什么| 廿年是什么意思| 卒中什么意思| 后下药什么时候下| 类风湿是什么病| 豆粕是什么东西| 今天开什么码| 喉咙发炎吃什么药好得快| maxrieny是什么品牌| 面包糠是什么做的| 合肥有什么特产| 孕妇喝可乐对胎儿有什么影响| 月经来了腰疼是什么原因| 油边是什么肉| 仓鼠能吃什么东西| 蜂蜜不能和什么食物一起吃| 湿热重吃什么药| 卫校有什么专业| 六扇门是什么意思| 眩晕症是什么病| 外感风寒是什么意思| 假花放在家里有什么忌讳| 为什么梦不到死去的亲人| 质是什么意思| 带鱼屏是什么意思| 买二手苹果手机要注意什么| 猫的眼睛为什么会发光| 男人胡子长得快是什么原因| 脑梗什么不能吃| 霸屏是什么意思| 尿量变少是什么原因| 血虚吃什么好| kbs是什么意思| 霸王别姬是什么生肖| 狐臭是什么味| 不走寻常路是什么意思| 肚子大腿细是什么原因| 抑郁症是什么| 上胸围90下胸围80是什么罩杯| tmt是什么意思| 摸头杀是什么意思| 贫血孕妇吃什么补血最快| 婴儿湿疹不能吃什么| 境字五行属什么| 皂苷是什么| 无锡有什么好玩的| 空腹胰岛素高是什么原因| 慢性胃炎用什么药效果最好| 反复发烧是什么原因引起的| 屋后有坟有什么影响吗| 秀才相当于现在的什么学历| 阿斯顿马丁什么档次| 含漱是什么意思| 墨镜镜片什么材质好| 宝宝吃什么辅食最好| 吃软不吃硬是什么生肖| 吃什么食物补阳气| 膝盖酸胀是什么原因| 脑供血不足吃什么药| 时间的定义是什么| 午夜是什么时候| 什么牌子的学习机好| 塑料是什么材质| 脂溢性皮炎是什么症状| 钙片什么时候吃最好| 影字五行属什么| 清胃火吃什么药| rmb是什么货币| 止吐吃什么药| 左侧卵巢囊肿是什么原因引起的| 青龙男是什么意思| 秦朝为什么那么快灭亡| 聚酯纤维是什么面料优缺点| 此什么非彼什么的意思| 解脲支原体阳性吃什么药| 锦鲤是什么意思| 血小板低会引发什么病| 膝盖后面叫什么部位| 玛丽苏什么意思| 保妇康栓是治疗什么的| 6月11号是什么星座| 明矾和白矾有什么区别| 中药木香的功效与作用是什么| 发量少适合什么发型| 牙齿经常出血是什么原因| 二八佳人是什么意思| 救人一命胜造七级浮屠是什么意思| 康宽杀虫剂能杀什么虫| 孕妇用什么驱蚊最好| 急性肠胃炎用什么药| 心什么胆什么| zzegna是什么牌子价格| 芦根煮水的功效是什么| 六月八号是什么星座| pi是什么意思| 男友力是什么意思| 女子胞指的是什么| 检查hpv挂什么科| 左肺上叶肺大泡是什么意思| 为什么新生儿会有黄疸| 马冲什么生肖| 说话口臭是什么原因引起的| 梦见买帽子是什么意思| 动手术后吃什么对伤口恢复比较快| 免疫球蛋白有什么作用| 素质教育是什么| 魅惑是什么意思| 晚上老是做梦是什么原因| 不速之客是什么意思| 焦虑症吃什么药好得快| 毛囊炎长什么样| 肚脐周围疼是什么原因| 肝炎是什么病| 特务是什么| 梦见舅舅是什么意思| 霍光和卫子夫什么关系| 穿梭是什么意思| 2028是什么年| 佛舍利到底是什么| 朕是什么时候开始用的| 高铁跟动车有什么区别| 夜尿增多是什么原因| 体育生能报什么专业| 什么克金| 小孩流鼻血吃什么好| 什么袍加身| 男人喜欢什么样的女人做老婆| 5.22是什么星座| 柠檬水苦是什么原因| 103是什么意思| 清鼻涕是什么感冒| 孕期腰疼是什么原因| 非甾体抗炎药是什么意思| 哟西哟西什么意思| 知了吃什么| 岳飞属什么生肖| 有始无终是什么生肖| 吃什么尿酸降得快| 儿童急性肠胃炎吃什么药| 华丽转身什么意思| 手指关节肿胀是什么原因| 赞赏是什么意思| 什么的搏斗| 侯字五行属什么| 陈赫为什么离婚| 百度Jump to content

怀集举办春季农业招商引资洽谈会 签约项目12宗

Gikan sa Bikol Sentral na Wikipedia, an talingkas na ensiklopedya
百度 剧中将出现无人机航拍、无人机搜救等多种真实应用,不管是医疗救援、野外出游等都可以看到无人机的影子,为观众提供了不同的视觉观感。
-- This is a meta-module for producing message box templates, including
-- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}.

-- Load necessary modules.
require('Module:No globals')
local getArgs
local categoryHandler = require('Module:Category handler')._main
local yesno = require('Module:Yesno')

-- Get a language object for formatDate and ucfirst.
local lang = mw.language.getContentLanguage()

--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------

local function getTitleObject(...)
	-- Get the title object, passing the function through pcall
	-- in case we are over the expensive function count limit.
	local success, title = pcall(mw.title.new, ...)
	if success then
		return title
	end
end

local function union(t1, t2)
	-- Returns the union of two arrays.
	local vals = {}
	for i, v in ipairs(t1) do
		vals[v] = true
	end
	for i, v in ipairs(t2) do
		vals[v] = true
	end
	local ret = {}
	for k in pairs(vals) do
		table.insert(ret, k)
	end
	table.sort(ret)
	return ret
end

local function getArgNums(args, prefix)
	local nums = {}
	for k, v in pairs(args) do
		local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
		if num then
			table.insert(nums, tonumber(num))
		end
	end
	table.sort(nums)
	return nums
end

--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------

local MessageBox = {}
MessageBox.__index = MessageBox

function MessageBox.new(boxType, args, cfg)
	args = args or {}
	local obj = {}

	-- Set the title object and the namespace.
	obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()

	-- Set the config for our box type.
	obj.cfg = cfg[boxType]
	if not obj.cfg then
		local ns = obj.title.namespace
		-- boxType is "mbox" or invalid input
		if ns == 0 then
			obj.cfg = cfg.ambox -- main namespace
		elseif ns == 6 then
			obj.cfg = cfg.imbox -- file namespace
		elseif ns == 14 then
			obj.cfg = cfg.cmbox -- category namespace
		else
			local nsTable = mw.site.namespaces[ns]
			if nsTable and nsTable.isTalk then
				obj.cfg = cfg.tmbox -- any talk namespace
			else
				obj.cfg = cfg.ombox -- other namespaces or invalid input
			end
		end
	end

	-- Set the arguments, and remove all blank arguments except for the ones
	-- listed in cfg.allowBlankParams.
	do
		local newArgs = {}
		for k, v in pairs(args) do
			if v ~= '' then
				newArgs[k] = v
			end
		end
		for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
			newArgs[param] = args[param]
		end
		obj.args = newArgs
	end

	-- Define internal data structure.
	obj.categories = {}
	obj.classes = {}

	return setmetatable(obj, MessageBox)
end

function MessageBox:addCat(ns, cat, sort)
	if not cat then
		return nil
	end
	if sort then
		cat = string.format('[[Category:%s|%s]]', cat, sort)
	else
		cat = string.format('[[Category:%s]]', cat)
	end
	self.categories[ns] = self.categories[ns] or {}
	table.insert(self.categories[ns], cat)
end

function MessageBox:addClass(class)
	if not class then
		return nil
	end
	table.insert(self.classes, class)
end

function MessageBox:setParameters()
	local args = self.args
	local cfg = self.cfg

	-- Get type data.
	self.type = args.type
	local typeData = cfg.types[self.type]
	self.invalidTypeError = cfg.showInvalidTypeError
		and self.type
		and not typeData
	typeData = typeData or cfg.types[cfg.default]
	self.typeClass = typeData.class
	self.typeImage = typeData.image

	-- Find if the box has been wrongly substituted.
	self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'

	-- Find whether we are using a small message box.
	self.isSmall = cfg.allowSmall and (
		cfg.smallParam and args.small == cfg.smallParam
		or not cfg.smallParam and yesno(args.small)
	)

	-- Add attributes, classes and styles.
	self.id = args.id
	self:addClass(
		cfg.usePlainlinksParam and yesno(args.plainlinks or true) and 'plainlinks'
	)
	for _, class in ipairs(cfg.classes or {}) do
		self:addClass(class)
	end
	if self.isSmall then
		self:addClass(cfg.smallClass or 'mbox-small')
	end
	self:addClass(self.typeClass)
	self:addClass(args.class)
	self.style = args.style
	self.attrs = args.attrs

	-- Set text style.
	self.textstyle = args.textstyle

	-- Find if we are on the template page or not. This functionality is only
	-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
	-- and cfg.templateCategoryRequireName are set.
	self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
	if self.useCollapsibleTextFields
		or cfg.templateCategory
		and cfg.templateCategoryRequireName
	then
		self.name = args.name
		if self.name then
			local templateName = mw.ustring.match(
				self.name,
				'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
			) or self.name
			templateName = 'Template:' .. templateName
			self.templateTitle = getTitleObject(templateName)
		end
		self.isTemplatePage = self.templateTitle
			and mw.title.equals(self.title, self.templateTitle)
	end

	-- Process data for collapsible text fields. At the moment these are only
	-- used in {{ambox}}.
	if self.useCollapsibleTextFields then
		-- Get the self.issue value.
		if self.isSmall and args.smalltext then
			self.issue = args.smalltext
		else
			local sect
			if args.sect == '' then
				sect = 'This ' .. (cfg.sectionDefault or 'page')
			elseif type(args.sect) == 'string' then
				sect = 'This ' .. args.sect
			end
			local issue = args.issue
			issue = type(issue) == 'string' and issue ~= '' and issue or nil
			local text = args.text
			text = type(text) == 'string' and text or nil
			local issues = {}
			table.insert(issues, sect)
			table.insert(issues, issue)
			table.insert(issues, text)
			self.issue = table.concat(issues, ' ')
		end

		-- Get the self.talk value.
		local talk = args.talk
		-- Show talk links on the template page or template subpages if the talk
		-- parameter is blank.
		if talk == ''
			and self.templateTitle
			and (
				mw.title.equals(self.templateTitle, self.title)
				or self.title:isSubpageOf(self.templateTitle)
			)
		then
			talk = '#'
		elseif talk == '' then
			talk = nil
		end
		if talk then
			-- If the talk value is a talk page, make a link to that page. Else
			-- assume that it's a section heading, and make a link to the talk
			-- page of the current page with that section heading.
			local talkTitle = getTitleObject(talk)
			local talkArgIsTalkPage = true
			if not talkTitle or not talkTitle.isTalkPage then
				talkArgIsTalkPage = false
				talkTitle = getTitleObject(
					self.title.text,
					mw.site.namespaces[self.title.namespace].talk.id
				)
			end
			if talkTitle and talkTitle.exists then
				local talkText = 'Relevant discussion may be found on'
				if talkArgIsTalkPage then
					talkText = string.format(
						'%s [[%s|%s]].',
						talkText,
						talk,
						talkTitle.prefixedText
					)
				else
					talkText = string.format(
						'%s the [[%s#%s|talk page]].',
						talkText,
						talkTitle.prefixedText,
						talk
					)
				end
				self.talk = talkText
			end
		end

		-- Get other values.
		self.fix = args.fix ~= '' and args.fix or nil
		local date
		if args.date and args.date ~= '' then
			date = args.date
		elseif args.date == '' and self.isTemplatePage then
			date = lang:formatDate('F Y')
		end
		if date then
			self.date = string.format(" <small>''(%s)''</small>", date)
		end
		self.info = args.info
	end

	-- Set the non-collapsible text field. At the moment this is used by all box
	-- types other than ambox, and also by ambox when small=yes.
	if self.isSmall then
		self.text = args.smalltext or args.text
	else
		self.text = args.text
	end

	-- Set the below row.
	self.below = cfg.below and args.below

	-- General image settings.
	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
	self.imageEmptyCell = cfg.imageEmptyCell
	if cfg.imageEmptyCellStyle then
		self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px'
	end

	-- Left image settings.
	local imageLeft = self.isSmall and args.smallimage or args.image
	if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
		or not cfg.imageCheckBlank and imageLeft ~= 'none'
	then
		self.imageLeft = imageLeft
		if not imageLeft then
			local imageSize = self.isSmall
				and (cfg.imageSmallSize or '30x30px')
				or '40x40px'
			self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
				or 'Imbox notice.png', imageSize)
		end
	end

	-- Right image settings.
	local imageRight = self.isSmall and args.smallimageright or args.imageright
	if not (cfg.imageRightNone and imageRight == 'none') then
		self.imageRight = imageRight
	end
end

function MessageBox:setMainspaceCategories()
	local args = self.args
	local cfg = self.cfg

	if not cfg.allowMainspaceCategories then
		return nil
	end

	local nums = {}
	for _, prefix in ipairs{'cat', 'category', 'all'} do
		args[prefix .. '1'] = args[prefix]
		nums = union(nums, getArgNums(args, prefix))
	end

	-- The following is roughly equivalent to the old {{Ambox/category}}.
	local date = args.date
	date = type(date) == 'string' and date
	local preposition = 'from'
	for _, num in ipairs(nums) do
		local mainCat = args['cat' .. tostring(num)]
			or args['category' .. tostring(num)]
		local allCat = args['all' .. tostring(num)]
		mainCat = type(mainCat) == 'string' and mainCat
		allCat = type(allCat) == 'string' and allCat
		if mainCat and date and date ~= '' then
			local catTitle = string.format('%s %s %s', mainCat, preposition, date)
			self:addCat(0, catTitle)
			catTitle = getTitleObject('Category:' .. catTitle)
			if not catTitle or not catTitle.exists then
				self:addCat(0, 'Articles with invalid date parameter in template')
			end
		elseif mainCat and (not date or date == '') then
			self:addCat(0, mainCat)
		end
		if allCat then
			self:addCat(0, allCat)
		end
	end
end

function MessageBox:setTemplateCategories()
	local args = self.args
	local cfg = self.cfg

	-- Add template categories.
	if cfg.templateCategory then
		if cfg.templateCategoryRequireName then
			if self.isTemplatePage then
				self:addCat(10, cfg.templateCategory)
			end
		elseif not self.title.isSubpage then
			self:addCat(10, cfg.templateCategory)
		end
	end

	-- Add template error categories.
	if cfg.templateErrorCategory then
		local templateErrorCategory = cfg.templateErrorCategory
		local templateCat, templateSort
		if not self.name and not self.title.isSubpage then
			templateCat = templateErrorCategory
		elseif self.isTemplatePage then
			local paramsToCheck = cfg.templateErrorParamsToCheck or {}
			local count = 0
			for i, param in ipairs(paramsToCheck) do
				if not args[param] then
					count = count + 1
				end
			end
			if count > 0 then
				templateCat = templateErrorCategory
				templateSort = tostring(count)
			end
			if self.categoryNums and #self.categoryNums > 0 then
				templateCat = templateErrorCategory
				templateSort = 'C'
			end
		end
		self:addCat(10, templateCat, templateSort)
	end
end

function MessageBox:setAllNamespaceCategories()
	-- Set categories for all namespaces.
	if self.invalidTypeError then
		local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
		self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
	end
	if self.isSubstituted then
		self:addCat('all', 'Pages with incorrectly substituted templates')
	end
end

function MessageBox:setCategories()
	if self.title.namespace == 0 then
		self:setMainspaceCategories()
	elseif self.title.namespace == 10 then
		self:setTemplateCategories()
	end
	self:setAllNamespaceCategories()
end

function MessageBox:renderCategories()
	-- Convert category tables to strings and pass them through
	-- [[Module:Category handler]].
	return categoryHandler{
		main = table.concat(self.categories[0] or {}),
		template = table.concat(self.categories[10] or {}),
		all = table.concat(self.categories.all or {}),
		nocat = self.args.nocat,
		page = self.args.page
	}
end

function MessageBox:export()
	local root = mw.html.create()

	-- Add the subst check error.
	if self.isSubstituted and self.name then
		root:tag('b')
			:addClass('error')
			:wikitext(string.format(
				'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
				mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
			))
	end

	-- Create the box table.
	local boxTable = root:tag('table')
	boxTable:attr('id', self.id or nil)
	for i, class in ipairs(self.classes or {}) do
		boxTable:addClass(class or nil)
	end
	boxTable
		:cssText(self.style or nil)
		:attr('role', 'presentation')

	if self.attrs then
		boxTable:attr(self.attrs)
	end

	-- Add the left-hand image.
	local row = boxTable:tag('tr')
	if self.imageLeft then
		local imageLeftCell = row:tag('td'):addClass('mbox-image')
		if self.imageCellDiv then
			-- If we are using a div, redefine imageLeftCell so that the image
			-- is inside it. Divs use style="width: 52px;", which limits the
			-- image width to 52px. If any images in a div are wider than that,
			-- they may overlap with the text or cause other display problems.
			imageLeftCell = imageLeftCell:tag('div'):css('width', '52px')
		end
		imageLeftCell:wikitext(self.imageLeft or nil)
	elseif self.imageEmptyCell then
		-- Some message boxes define an empty cell if no image is specified, and
		-- some don't. The old template code in templates where empty cells are
		-- specified gives the following hint: "No image. Cell with some width
		-- or padding necessary for text cell to have 100% width."
		row:tag('td')
			:addClass('mbox-empty-cell')
			:cssText(self.imageEmptyCellStyle or nil)
	end

	-- Add the text.
	local textCell = row:tag('td'):addClass('mbox-text')
	if self.useCollapsibleTextFields then
		-- The message box uses advanced text parameters that allow things to be
		-- collapsible. At the moment, only ambox uses this.
		textCell:cssText(self.textstyle or nil)
		local textCellSpan = textCell:tag('span')
		textCellSpan
			:addClass('mbox-text-span')
			:wikitext(self.issue or nil)
		if not self.isSmall then
			textCellSpan:tag('span')
				:addClass('hide-when-compact')
				:wikitext(self.talk and (' ' .. self.talk) or nil)
				:wikitext(self.fix and (' ' .. self.fix) or nil)
		end
		textCellSpan:wikitext(self.date and (' ' .. self.date) or nil)
		if not self.isSmall then
			textCellSpan
				:tag('span')
				:addClass('hide-when-compact')
				:wikitext(self.info and (' ' .. self.info) or nil)
		end
	else
		-- Default text formatting - anything goes.
		textCell
			:cssText(self.textstyle or nil)
			:wikitext(self.text or nil)
	end

	-- Add the right-hand image.
	if self.imageRight then
		local imageRightCell = row:tag('td'):addClass('mbox-imageright')
		if self.imageCellDiv then
			-- If we are using a div, redefine imageRightCell so that the image
			-- is inside it.
			imageRightCell = imageRightCell:tag('div'):css('width', '52px')
		end
		imageRightCell
			:wikitext(self.imageRight or nil)
	end

	-- Add the below row.
	if self.below then
		boxTable:tag('tr')
			:tag('td')
				:attr('colspan', self.imageRight and '3' or '2')
				:addClass('mbox-text')
				:cssText(self.textstyle or nil)
				:wikitext(self.below or nil)
	end

	-- Add error message for invalid type parameters.
	if self.invalidTypeError then
		root:tag('div')
			:css('text-align', 'center')
			:wikitext(string.format(
				'This message box is using an invalid "type=%s" parameter and needs fixing.',
				self.type or ''
			))
	end

	-- Add categories.
	root:wikitext(self:renderCategories() or nil)

	return tostring(root)
end

--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------

local p, mt = {}, {}

function p._exportClasses()
	-- For testing.
	return {
		MessageBox = MessageBox
	}
end

function p.main(boxType, args, cfgTables)
	local box = MessageBox.new(boxType, args, cfgTables or mw.loadData('Module:Message box/configuration'))
	box:setParameters()
	box:setCategories()
	return box:export()
end

function mt.__index(t, k)
	return function (frame)
		if not getArgs then
			getArgs = require('Module:Arguments').getArgs
		end
		return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
	end
end

return setmetatable(p, mt)
1996年属鼠五行属什么 长期喝蜂蜜水有什么好处 风邪是什么意思 股骨头坏死吃什么药 能说会道是什么生肖
可颂是什么意思 痛经打什么针止痛 手心发黄是什么原因 舌头肿了是什么原因 台湾三小是什么意思
结节钙化是什么意思 为什么正骨后几天越来越疼 笔什么龙什么 乙肝二四五阳性什么意思 林冲为什么叫豹子头
胆囊炎吃什么好 韩语欧巴是什么意思 女性分泌物少是什么原因 冰清玉洁是什么意思 黄金有什么作用与功效
外科医生是做什么的hcv8jop5ns7r.cn 水是什么意思hcv8jop8ns2r.cn 被蜜蜂蛰了用什么药hcv8jop8ns0r.cn 田七配什么煲汤最好clwhiglsz.com 梦见吃樱桃是什么意思hcv8jop1ns1r.cn
为什么会得痛风hcv9jop3ns7r.cn 阴历7月22是什么日子fenrenren.com 1968属什么生肖hcv9jop6ns5r.cn 2月24号是什么星座sscsqa.com 轮状病毒吃什么药hcv9jop2ns2r.cn
碱和小苏打有什么区别hcv8jop6ns8r.cn 棕色眼睛的人什么血统hcv9jop6ns3r.cn 泡泡纱是什么面料hcv7jop7ns2r.cn 虾青素有什么功效hcv9jop1ns1r.cn 喜欢吃酸的人是什么体质hcv8jop1ns4r.cn
浅表性胃炎吃什么药好使naasee.com 天然气什么味道hcv8jop3ns2r.cn 农历今天属什么hcv9jop4ns9r.cn 熹是什么意思hcv9jop8ns1r.cn 三天打鱼两天晒网什么意思hcv9jop4ns5r.cn
百度