脂肪肝浸润是什么意思| 人格什么意思| 波立维什么时间吃最好| 刚生完孩子可以吃什么水果| 南京有什么好玩的景点| 女人肺气虚吃什么补最快| 梦见找鞋子是什么意思| 7月25号是什么星座| 什么多么什么造句| 脂溢性脱发是什么意思| 载歌载舞的载是什么意思| 喝酒打嗝是什么原因| 2楼五行属什么| 牛跟什么生肖相冲| 一惊一乍是什么意思| gpt是什么| 口腔扁平苔藓吃什么药| 替代品是什么意思| 血管瘤是什么意思| 躁动是什么意思| 公分是什么意思| 五月初六是什么星座| 男人尿道炎吃什么药最好| 一段奶粉和二段奶粉有什么区别| 科学家是干什么的| 高筋小麦粉适合做什么| 朝鲜钱币叫什么| 你想成为什么样的人| jomalone是什么牌子| 梦见自己骑马是什么意思| v店是什么| 三尖瓣轻度反流说明什么| 女兔配什么属相最好| 石英岩质玉是什么玉| 梦见好多猫是什么预兆| 为什么说有钱难买孕妇B| 梭织面料是什么面料| 子癫是什么病| 驾驶证照片是什么底色| 晚上三点是什么时辰| 梦见老虎是什么意思| 猫有什么品种| 步后尘是什么意思| 什么感觉| 什么样的花| 进是什么结构| 群众路线是什么| 包皮龟头炎用什么药膏| 洗手指征是什么| 公知是什么意思| 鲁米那又叫什么| 机器学习是什么| 陈皮泡酒喝有什么功效和作用| 为什么全身酸痛| hbv是什么病毒| 检查幽门螺杆菌挂什么科| 西兰花是什么季节的蔬菜| 笑气是什么气体| 脸红什么| 狂鸟读什么| 三月阳春好风光是什么生肖| 化疗后吃什么增强免疫力| 生肖猴和什么生肖相冲| 低压高吃什么降压药好| 前列腺炎是什么原因引起| 桥本甲状腺炎吃什么药| 什么是员额制| 办理港澳通行证需要什么材料| 卵巢多囊症是什么原因造成| 女人做梦梦到蛇是什么意思| 生理曲度存在是什么意思| 最好的油是什么油| 螃蟹吃什么东西| 疏忽是什么意思| 布偶猫长什么样| 慢性宫颈炎用什么药| 感冒什么症状| 草莓像什么| 吃什么补阴虚最好| 孕妇吃什么长胎不长肉| 什么是天乙贵人| tbc是什么意思| 黄晓明和杨颖什么时候结婚的| 什么雪糕最好吃| 电光性眼炎用什么眼药水| 糖丸是什么疫苗| 丙氨酸氨基转移酶是什么| 卡司是什么意思| 耷拉是什么意思| 三个火念什么| 迪化是什么意思| 多喝柠檬水有什么好处| 指鹿为马指什么生肖| 吃维生素c和维生素e有什么好处| 福尔马林是什么| 书五行属性是什么| 宫颈炎用什么药| 飞蚊症是什么| 减肥什么方法最快最有效| ct是检查什么的| 摩纳哥为什么这么富| 沉住气是什么意思| 糖尿病能吃什么零食| 喉咙干咳嗽是什么原因| 计算机二级什么时候考| 什么是智齿牙| 为什么射出来的精子是黄色的| 鸽子咕咕叫是什么意思| 1992年出生的是什么命| 四叶草代表什么| bioisland是什么牌子| 消肿吃什么食物好| 杜康原是什么| 脑梗塞用什么药效果好| editor是什么意思| 3月21日什么星座| 什么是割包皮| 滋阴补肾是什么意思| 尿的酸碱度能说明什么| 胃疼应该吃什么药| 梦见吃李子是什么意思| 验孕棒什么时候测| babyface是什么意思| 女人手指粗短是什么命| 病毒性心肌炎吃什么药| 妇科ph值是什么意思| 解肌是什么意思| 为什么体检前不能喝水| 头不自觉的晃动是什么原因| 胎毛什么时候剃最好| 什么的图案| 什么是轻食| 戴字五行属什么| 生粉是什么| 梦见打老鼠是什么征兆| 纳囊是什么| 什么药可以减肥瘦身| 板蓝根长什么样| 今年是什么年啊| 平均红细胞体积偏低是什么意思| 两棵树是什么牌子| 肝腹水有什么症状| 笑面虎什么意思| 宫寒吃什么好| 戒断是什么意思| 本色出演是什么意思| 胃反流是什么原因引起的| pr医学上什么意思| 姨妈期吃什么水果| 什么名字最好听| 扁平足是什么意思| 4月29号0点是什么时候| 胃食管反流用什么药| 日月星辰下一句是什么| 皮肤瘙痒是什么原因| 穷奢极欲什么意思| 血糖偏低是什么原因引起的| 女团是什么意思| 渐入佳境是什么意思| 瘦脸针的危害有什么副作用| 硬度不够吃什么中成药| 满面红光是什么意思| 蚊虫叮咬擦什么药膏| 扁尖是什么| 狗狗吃什么| 排骨炖什么好吃| 方案是什么意思| 包裹是什么意思| 犟驴是什么意思| 介错是什么意思| 凝血四项是查什么的| 无力感什么意思| pop是什么| 实习期扣分有什么影响| 什么的鹿角| 湿热是什么症状| absolue是兰蔻的什么产品| 隐士是什么意思| 爸爸过生日送什么礼物| crocodile是什么牌子| 手指甲有月牙代表什么| rush是什么意思| 鸡拉绿色粪便是什么病| 维生素b族适合什么人吃| 什么什么来迟| 1月15号是什么星座| 范畴的意思是什么| 消化不良用什么药| 胸疼应该挂什么科| 早搏应该吃什么药| 70年属什么生肖| 眼屎多吃什么药效果好| 为什么屎是黑色的| 挪威用什么货币| 沙和尚是什么妖怪| 媱字五行属什么| 妈妈生日送什么礼物好| 最高的山是什么山| 吃完桃子不能吃什么| 严重失眠吃什么药管用| 皮神经炎是什么症状| 孕妇喝什么茶对胎儿好| 血液病是什么病| 晁盖的绰号是什么| 经血逆流的症状是什么| 为什么说冬吃萝卜夏吃姜| 梦见陌生人死了是什么意思| 月经期适合做什么运动| 秦时明月什么时候更新| 罗锅是什么意思| 响屁多是什么原因| 火鸡面为什么这么贵| 俄罗斯信奉的是什么教| 朱元璋为什么不杀汤和| 送老师什么礼物| 怎么判断脸上是什么斑| 经期能吃什么水果| 心衰竭是什么病严重吗| 潘驴邓小闲是什么意思| 十一月四日是什么星座| 高血糖喝什么茶好| cima是什么证书| 淋巴细胞偏低是什么原因| 考试穿什么颜色的衣服| 藏风聚气是什么意思| 麻醉评估是什么意思| study是什么意思| 百香果吃了有什么好处| 1月29日是什么星座| 劳改是什么意思| 淋巴癌有什么症状| anna是什么意思| 肚子受凉吃什么药| AX是什么意思| 云州是现在的什么地方| 低压高吃什么药好| 外阴炎是什么原因引起的| 明天是什么节气| 喝完酒吃点什么对胃好| 什么是心理学| 仁字五行属什么| 或是什么意思| 小虾米吃什么| 脾胃虚吃什么调理| 上热下寒吃什么食物好| 女孩子学什么专业好| 天荒地老什么意思| punk什么意思| 碰到蛇是什么征兆| 89是什么意思| 正正得什么| 好看是什么意思| 四物汤是什么| 羊的守护神是什么菩萨| 男人尿频是什么原因| 心脏房颤吃什么药| 天相是什么意思| 第一次坐飞机需要注意什么| look是什么意思| 嚣张是什么意思| 霏字五行属什么| 屁多还臭是什么原因| 吃什么补脑子| 1955年是什么年| 百度Lompat ke isi

河南首开医保跨省即时结账单 已与25个省市联网

Halaman yang dilindungi
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

require('strict')
local getArgs
local yesno = require('Modul:Yesno')
local lang = mw.language.getContentLanguage()

local CONFIG_MODULE = 'Modul:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}

--------------------------------------------------------------------------------
-- Fungsi pembantu
--------------------------------------------------------------------------------

local function getTitleObject(...)
	-- Mendapatkan nilai objek judul dan kemudian menyalurkan fungsi ke kode pcall
	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

--------------------------------------------------------------------------------
-- Definisi kelas kotak
--------------------------------------------------------------------------------

local MessageBox = {}
MessageBox.__index = MessageBox

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

	-- Pengaturan nilai objek judul dengan ruang nama.
	obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()

	-- konfigurasi kotak pesan.
	obj.cfg = cfg[boxType]
	if not obj.cfg then
		local ns = obj.title.namespace
		-- boxType diatur sebagai "mbox" atau pemasukan akan bernilai tidak terduga
		if args.demospace and args.demospace ~= '' then
			-- demospasi mbox
			local demospace = string.lower(args.demospace)
			if DEMOSPACES[demospace] then
				-- penggunaan templat dari DEMOSPACES
				obj.cfg = cfg[DEMOSPACES[demospace]]
			elseif string.find( demospace, 'talk' ) then
				-- demo as a talk page
				obj.cfg = cfg.tmbox
			else
				-- default to ombox
				obj.cfg = cfg.ombox
			end
		elseif 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

	-- pengaturan argumen
	-- 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

	-- Penentuan struktur data.
	obj.categories = {}
	obj.classes = {}
	-- Pemuatan [[Modul:Category handler]].
	obj.hasCategories = false

	return setmetatable(obj, MessageBox)
end

function MessageBox:addCat(ns, cat, sort)
	if not cat then
		return nil
	end
	if sort then
		cat = string.format('[[Kategori:%s|%s]]', cat, sort)
	else
		cat = string.format('[[Kategori:%s]]', cat)
	end
	self.hasCategories = true
	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

	-- Menentukan apakah kotak yang ada mengalami kesalahan atau tidak.
	self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'

	-- Menentukan penggunaan kotak pesan yang digunakan.
	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.name = args.name
	if self.name then
		self:addClass('box-' .. string.gsub(self.name,' ','_'))
	end
	if yesno(args.plainlinks) ~= false then
		self:addClass('plainlinks')
	end
	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
		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 = 'Templat:' .. templateName
			self.templateTitle = getTitleObject(templateName)
		end
		self.isTemplatePage = self.templateTitle
			and mw.title.equals(self.title, self.templateTitle)
	end
	
	-- Pemrosesan data pada
	-- {{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 = '' .. (cfg.sectionDefault or 'page')
			elseif type(args.sect) == 'string' then
				sect = '' .. 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
                if self.isSmall then
                    local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
                    talkText = string.format('([[%s|pembicaraan]])', talkLink)
                else
                    talkText = 'Diskusi terkait dapat dibaca pada'
                    if talkArgIsTalkPage then
                        talkText = string.format(
                            '%s [[%s|%s]].',
                            talkText,
                            talk,
                            talkTitle.prefixedText
                        )
                    else
                        talkText = string.format(
                            '%s [[%s#%s|halaman pembicaraan]].',
                            talkText,
                            talkTitle.prefixedText,
                            talk
                        )
                    end
                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(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
		end
		self.info = args.info
		if yesno(args.removalnotice) then
			self.removalNotice = cfg.removalNotice
		end
	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

	-- 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('[[Berkas:%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
	
	-- set templatestyles
	self.base_templatestyles = cfg.templatestyles
	self.templatestyles = args.templatestyles
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', 'kategori', '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
	for _, num in ipairs(nums) do
		local mainCat = args['cat' .. tostring(num)]
			or args['kategori' .. 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', mainCat, 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', 'Parameter kotak pesan Wikipedia yang membutuhkan perbaikan', allSort)
	end
	if self.isSubstituted then
		self:addCat('all', 'Halaman dengan kesalahan subtitusi templat')
	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()
	if not self.hasCategories then
		-- No categories added, no need to pass them to Category handler so,
		-- if it was invoked, it would return the empty string.
		-- So we shortcut and return the empty string.
		return ""
	end
	-- Convert category tables to strings and pass them through
	-- [[Module:Category handler]].
	return require('Modul:Category handler')._main{
		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(
				'Templat <code>%s[[Template:%s|%s]]%s</code> tidak disubtitusikan dengan benar.',
				mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
			))
	end

	local frame = mw.getCurrentFrame()
	root:wikitext(frame:extensionTag{
		name = 'templatestyles',
		args = { src = self.base_templatestyles },
	})
	-- Add support for a single custom templatestyles sheet. Undocumented as
	-- need should be limited and many templates using mbox are substed; we
	-- don't want to spread templatestyles sheets around to arbitrary places
	if self.templatestyles then
		root:wikitext(frame:extensionTag{
			name = 'templatestyles',
			args = { src = self.templatestyles },
		})
	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'):addClass('mbox-image-div')
		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')
	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 textCellDiv = textCell:tag('div')
		textCellDiv
			:addClass('mbox-text-span')
			:wikitext(self.issue or nil)
		if (self.talk or self.fix) then
			textCellDiv:tag('span')
				:addClass('hide-when-compact')
				:wikitext(self.talk and (' ' .. self.talk) or nil)
				:wikitext(self.fix and (' ' .. self.fix) or nil)
		end
		textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
		if self.info and not self.isSmall then
			textCellDiv
				:tag('span')
				:addClass('hide-when-compact')
				:wikitext(self.info and (' ' .. self.info) or nil)
		end
		if self.removalNotice then
			textCellDiv:tag('span')
				:addClass('hide-when-compact')
				:tag('i')
					:wikitext(string.format(" (%s)", self.removalNotice))
		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'):addClass('mbox-image-div')
		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')
			:addClass('mbox-invalid-type')
			: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(CONFIG_MODULE))
	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)
luky是什么意思 精神食粮是什么意思 立刀旁的字和什么有关 什么原因引起低压高 小布丁是什么意思
二丁颗粒主要治什么病 7月23日什么星座 尿酸偏高是什么病 怀孕为什么会流血 pr过高是什么意思
hpv都有什么症状 相位是什么意思 c肽是什么 什么大什么粗 咳嗽完想吐是什么原因
ob是什么 梦见找鞋子是什么意思 经常放屁吃什么药好 男人阴囊潮湿吃什么药 鄙人不才是什么意思
鳖是什么动物hcv8jop9ns9r.cn 癫疯病早期有什么症状hcv7jop5ns5r.cn 心脏彩超fs是什么意思0735v.com 站街女是什么意思aiwuzhiyu.com 舌裂纹吃什么可以恢复weuuu.com
苯佐卡因是什么hcv9jop1ns8r.cn 萎靡什么意思hcv8jop5ns8r.cn 地铁是什么hcv8jop6ns1r.cn 11.15是什么星座zsyouku.com 适宜是什么意思hcv9jop1ns3r.cn
胸闷气短是什么原因造成的hcv8jop9ns7r.cn 电商属于什么行业jinxinzhichuang.com 承你吉言是什么意思hcv8jop8ns3r.cn gmv是什么意思520myf.com 强五行属什么hcv8jop7ns2r.cn
餐后血糖高吃什么药hcv8jop2ns9r.cn 穿刺是什么意思hcv9jop4ns9r.cn 红斑狼疮是什么症状hcv8jop4ns9r.cn 舌头凉凉的是什么原因hcv8jop9ns4r.cn 猫尿床是因为什么原因hcv8jop0ns5r.cn
百度