区级以上医院是什么意思| 信保是什么| 什么叫体位性低血压| 殚精竭虑是什么意思| 产褥期是什么意思| 做梦梦到自己生病了是什么意思| 上户口需要什么资料| 血脂高是什么原因引起| 拔智齿后需要注意什么| 紊乱是什么意思| 吃什么能去湿气最好| 做什么检查确诊是白塞| 什么狗聪明听话又好养| 虫草适合什么人吃| 月经不能吃什么水果| 发呆表情是什么意思| 什么叫统招| 头皮发麻是什么病的前兆| 痔疮开刀后吃什么好| 全自动洗衣机不脱水是什么原因| 我们是什么意思| 潜力是什么意思| 月经每个月都推迟是什么原因| 杨梅和什么不能一起吃| 适当是什么意思| 背包客是什么意思| 什么是一桌餐| 肺纹理增强是什么意思| 兔子肉不能和什么一起吃| 白芨主治什么病| iron什么意思| 连锁反应是什么意思| 检查痛风挂什么科| 乙肝通过什么传染| 大校军衔相当于什么官| 来月经可以吃什么水果| cc是什么| 心慌吃点什么药| a型血可以接受什么血型| 家徒四壁是什么生肖| 尿等待吃什么药最好| cn是什么单位| 孕妇做糖筛是检查什么| 脉搏强劲有力代表什么| 出汗对身体有什么好处| 砚是什么东西| 胰是什么器官| 类风湿有什么症状| 卡哇伊是什么意思| 食管裂孔疝是什么病| 狗吃什么| 生长因子是什么| 犹豫不决是什么生肖| 去湿气吃什么最好| 培坤丸有什么作用功效| 过敏是什么样的图片| 新生儿出院回家有什么讲究| 三五成群十双在是什么生肖| 普陀山求什么最灵| 绦是什么意思| 大腿抽筋是什么原因| 为什么生气会胃疼| 车震是什么意思| 风调雨顺的下联是什么| 蚂蚱喜欢吃什么| 硬水是什么意思| 泡蛇酒用什么药材最好| 刻骨铭心是什么意思| 失眠多梦吃什么药效果最好| 绣球花什么时候开花| 1989年是什么蛇| 贫血到什么程度会晕倒| 冰恋是什么意思| 吃葛根粉有什么好处| 不建议什么意思| 宝宝大便有泡沫是什么原因| 五谷有什么| 大学生村官是什么编制| igm抗体阳性是什么意思| 胃阳不足吃什么中成药| 人流后吃什么水果好| media是什么意思| 咖啡喝多了有什么副作用| 56年属什么| 色字头上一把刀什么意思| 心阴虚吃什么食物| 胎位roa是什么意思| 西兰花不能和什么一起吃| 晕厥是什么意思| 什么颜色属火| 恐惧症吃什么药最好| 人心不足蛇吞象是什么意思| 8月份什么星座| 6.30是什么星座| 月老叫什么名字| 蛋白粉和乳清蛋白粉有什么区别| 气虚吃什么补最快| 冤家路窄是什么生肖| 半身不遂的前兆是什么症状| foryou是什么意思| 开普拉多的都是什么人| 胰腺炎为什么血糖高| 什么是碱性食物有哪些| 什么是津液| 伶牙俐齿是什么生肖| 能戒烟的男人什么性格| 吃什么补肾气| 清考是什么意思| 疱疹吃什么药可以根治| 什么米减肥效果好| 卵泡排出来是什么样的| 吉星高照是什么生肖| 血压是什么| 氯化钾是什么东西| 招采是什么意思| 空调出的水是什么水| 人类免疫缺陷病毒抗体是什么意思| 鼻子痒是什么原因| 女人烂桃花多说明什么| 腱鞘炎贴什么膏药| 肛周脓肿吃什么消炎药| nc是什么| 鸟屎掉衣服上有什么预兆| 人为什么会做噩梦| 吃维e有什么好处和副作用| 证候是什么意思| 肺部纤维化是什么意思| 心衰吃什么药最好| 小便短赤是什么意思| 神经性皮炎用什么药好| 975是什么意思| 吃什么治疗便秘| 阴道里面痒是什么原因| 高硼硅是什么材质| 泰五行属什么| 胸为什么会胀痛| 吃枸杞对身体有什么好处| 脑白质疏松是什么意思| 宫高是什么意思| 亟须什么意思| 感冒冒虚汗是什么原因| 血小板为0意味着什么| 甲状腺回声不均匀什么意思| 大白刁是什么鱼| nba下个赛季什么时候开始| 胃肠性感冒吃什么药| 房间朝向什么方向最好| 经常做噩梦是什么原因| 可塑性是什么意思| 小便刺痛什么原因| 狂犬疫苗为什么要打五针| 既济是什么意思| 12378是什么电话| ped是什么意思| 女人丹凤眼意味什么| 嘴唇上长痘是什么原因| 什么是颈椎病| 儿童干咳吃什么药效果好| 我看见了什么| 黄芪搭配什么不上火| 乳酪是什么东西| 眉心发红是什么原因| 暴跳如雷是什么意思| 421是什么意思| 摩羯和什么星座最配| 景五行属什么| 睾丸瘙痒是什么原因| 为什么眉毛会白| 瑜伽是什么运动| junior什么意思| 为什么崴脚了休息一晚脚更疼| 蔡字五行属什么| 古字五行属什么| 新生儿为什么会有黄疸| 地主是什么生肖| 反酸水是什么原因| 殿后和垫后有什么区别| 为什么会闰月| 心脏怕什么| 鼻涕臭是什么原因| 燕然未勒归无计的上一句是什么| 静脉石是什么意思| 苏州古代叫什么| 检查肾脏挂什么科| 什么胃病需要做手术| 澄面是什么面粉| 受虐倾向是什么意思| dsa是什么意思| 慢性病都包括什么病| g是什么牌子| 用你的手解我的锁是什么歌| anxiety什么意思| 5月20日什么星座| 容易淤青的体质叫什么| 气机是什么意思| 银饰发黑是什么原因| 聚酯纤维是什么面料| 孕妇建档需要什么资料| 叩首是什么意思| 手指关节疼痛挂什么科| 糜烂性胃炎有什么症状| 血压的低压高是什么原因| 爱是什么意思| 腰椎退变是什么意思| 连麦是什么意思| 谩骂是什么意思| 半夜吃什么不会胖| o是什么| 入肉是什么意思| 拉不出屎是什么原因| 甘草长什么样子图片| 20至30元什么烟最好抽| 鱼露是什么味道| 骨裂吃什么药| 空亡是什么意思| sp02是什么意思| 老人不睡觉是什么预兆| 仙人板板 是什么意思| 真金白银是什么意思| 舌苔发黑是什么原因| 6月8日什么星座| 癸是什么意思| 龙马精神代表什么生肖| 卧室养什么花好| 3岁小孩不会说话是什么原因| 梅雨季节是什么时候| 甲不开仓财物耗散是什么意思| 肚脐周围是什么器官| leonardo是什么牌子| 脚掉皮是什么原因| b型o型生出来的孩子什么血型| 什么是烤瓷牙| 生孩子送什么花比较好| 1997年是什么命| 趣味相投是什么意思| 嘈杂的意思是什么| 低密度是什么意思| 胆固醇高是什么意思| 三月五号是什么星座| 一加一为什么等于二| 骨密度z值是什么意思| 什么叫等离子| 阴虚吃什么中药| 双肺纤维灶是什么意思| 诏安是什么意思| 舌头热灼是什么原因| 人生格言是什么| 为什么叫丁克| 女装什么牌子好| 什么是人肉搜索| 23333是什么意思| 黑指甲是什么症状图片| 甲泼尼龙是什么药| 底妆是什么意思| 甲亢多吃什么食物比较好| 西米露是什么| 什么的花蕾| 窗户代表什么生肖| 行长是什么级别| 每天喝柠檬水有什么好处| 胸上长痘痘是什么原因| essence什么意思| 陈皮是什么皮| 俄罗斯的国花是什么花| 百度????? ??? ???????

校长昨日被告有寒蝉效应台大校务代表:今天谁敢讲话

???? ????? ?????? (???? ?????? ???????)
?? ?????????? ???????? ?????

require('strict')

-- Module to create sister project link box
local getArgs = require('Module:Arguments').getArgs
local sideBox = require('Module:Side box')._main
local p = {}

local inSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) 

-- Function to add "-sand" to classes when called from sandbox
local function sandbox(s)
	return inSandbox and s.."-sand" or s
end

-- Information about how to handle each sister lives in separate data file
local cfg = mw.loadData(sandbox('Module:Sister project links/config'))
local logo = cfg.logo
local prefixList = cfg.prefixList
local sisterName = cfg.sisterName
local sisterInfo = cfg.sisterInfo
local defaultSisters = cfg.defaultSisters
local sisterDb = cfg.sisterDb
local trackingType = cfg.trackingType 

-- Function to canonicalize string
-- search for variants of "yes", and "no", and transform
-- them into a standard form (like [[Template:YesNo]])
-- Argument:
--   s --- input string
-- Result:
--  {x,y} list of length 2
--    x = nil if s is canonicalized, otherwise has trimmed s
--    y = canonical form of s (true if "yes" or other, false if "no", nil if blank)
local function canonicalize(s)
	if s == nil then
		return {nil, nil}
	end
	-- if s is table/list, then assume already canonicalized and return unchanged
	if tostring(type(s)) == "table" then
		return s
	end
	s = mw.text.trim(tostring(s))
	if s == "" then
		return {nil, nil}
	end
	local lowerS = s:lower()
	-- Check for various forms of "yes"
	if lowerS == 'yes' or lowerS == 'y' or lowerS == 't' 
	      or lowerS == '1' or lowerS == 'true' or lowerS == 'on' then
		return {nil, true}
	end
    -- Check for various forms of "no"
	if lowerS == 'no' or lowerS == 'n' or lowerS == 'f' 
	       or lowerS == '0' or lowerS == 'false' or lowerS == 'off'then
		return {nil, false}
	end
    -- Neither yes nor no recognized, leave string trimmed
	return {s, true}
end

-- Merge two or more canonicalized argument lists
-- Arguments:
--  argList = list of canonicalized arguments
--  noAll = if true, return no when all argList is no.
--          otherwise, return blank when all argList is blank
local function mergeArgs(argList,noAll)
	local test = nil -- default, return blank if all blank
	if noAll then
		test = false -- return no if all no
	end
	local allSame = true
	-- Search through string for first non-no or non-blank
	for _, arg in ipairs(argList) do
		if arg[2] then
			return arg -- found non-no and non-blank, return it
		end
		-- test to see if argList is all blank / no
		allSame = allSame and (arg[2] == test)
	end
	-- if all blank / no, return blank / no
	if allSame then
		return {nil, test} -- all match no/blank, return it
	end
	-- otherwise, return no / blank
	if noAll then
		return {nil, nil}
	end
	return {nil, false}
end
		
-- Function to get sitelink for a wiki
-- Arguments:
--   wiki = db name of wiki to lookup
--   qid = QID of entity to search for, current page entity by default
local function getSitelink(wiki,qid)
	-- return nil if some sort of lookup failure
	return qid and mw.wikibase.getSitelink(qid,wiki)
end

-- Function to get sitelink for a wiki
-- Arguments:
--   prefix = prefix string for wiki to lookup
--   qid = QID of entity to search for, current page entity by default
local function fetchWikidata(prefix,qid)
	local sisterDbName = sisterDb[prefix]
	return sisterDbName and getSitelink(sisterDbName,qid)
end

-- Function to generate the sister link itself
-- Arguments:
--  args = argument table for function
--     args[1] = page to fetch
--     args.default = link when blank
--     args.auto = new auto mode (don't fall back to search)
--     args.sitelink = wikidata sitelink (if available)
--     args.qid = QID of entity
--     args.search = fallback string to search for
--     args.sisterPrefix = wikitext prefix for sister site
--     args.information = type of info sister site contains
--  tracking = tracking table
local function genSisterLink(args, tracking)
	if args[1][2] == false or (not args.default and args[1][2] == nil) then
		return nil --- either editor specified "no", or "blank" (and default=no), then skip this sister
	end
	local sitelink = args.sitelink or fetchWikidata(args.sisterPrefix,args.qid)
	if args.auto and not sitelink and args[1][2] == nil then
		return nil --- in auto mode, if link is blank and no sitelink, then skip
	end
	-- fallback order of sister link: first specified page, then wikidata, then search
	local link = args[1][1] or sitelink or (args.search and "???:"..args.search)
	if not link then
		return nil --- no link found, just skip
	end
	if tracking then
		-- update state for tracking categories
		if args[1][1] and sitelink then
			-- transform supplied page name to be in wiki-format
			local page = mw.ustring.gsub(args[1][1],"_"," ")
			page = mw.ustring.sub(page,1,1):upper()..mw.ustring.sub(page,2)
			local pageNS = mw.ustring.match(page,"^([^:]+):")
			local sitelinkNS = mw.ustring.match(sitelink,"^([^:]+):")
			if page == sitelink then
				tracking.wdHidden = args.sisterPrefix
			elseif pageNS ~= sitelinkNS then
				tracking.wdNamespace = args.sisterPrefix
			else
				tracking.wdMismatch = args.sisterPrefix
			end
		-- if no page link, nor a wikidata entry, and search is on, then warn
		elseif not (args[1][2] or sitelink) and args.search then
			tracking.defaultSearch = args.sisterPrefix
		end
	end
	return {prefix=args.sisterPrefix, link=link, logo=args.logo, name=args.name,
		    information=args.information, prep=args.prep}
end

-- Function to handle special case of commons link
local function commonsLinks(args, commonsPage)
	-- use [[Module:Commons link]] to determine best commons link
	local commonsLink = require('Module:Commons link')
	local cLink = (not args.commonscat) and commonsLink._hasGallery(args.qid)
	                 or commonsLink._hasCategory(args.qid)
	if commonsPage[1] and not mw.ustring.match(commonsPage[1]:lower(),"^category:") then
		commonsPage[1] = (args.commonscat and "Category:" or "")..commonsPage[1]
	end
	local commonsSearch = "Search/"..(args.commonscat and "Category:" or "")..args[1]
	return {link=cLink, search=commonsSearch}
end

-- Function to handle special case for "author" and "cookbook"
local function handleSubtype(args)
	local ns = args.ns
	local ns_len = mw.ustring.len(ns)
	local result = {}
	result.sitelink = fetchWikidata(args.prefix, args.qid)
	local subtype = false
	if args.page then
		if mw.ustring.sub(args.page,1,ns_len) == ns then
    		subtype = true
    	elseif args.subtype then
    		result.page = ns..args.page
    		subtype = true
    	end
	elseif result.sitelink then
		subtype = mw.ustring.sub(result.sitelink,1,ns_len) == ns
	elseif args.subtype then
		result.search = "Search/"..ns..args.default
		subtype = true
	end
	if subtype then
		result.info = args.info
	end
	return result
end

-- Function to create a sister link, by prefix
-- Arguments:
--   prefix = sister prefix (e.g., "c" for commons)
--   args = arguments for this sister (see p._sisterLink above)
--   tracking = tracking table
local function sisterLink(prefix, args, tracking)
	-- determine arguments to genSisterLink according to prefix
	if prefix == 'species_author' and not args.species[1] and args.species[2] and not args.species_author[1] and args.species_author[2] then
		return nil
	end
	local default = defaultSisters[prefix]
	if default == 'auto' then
		default = args.auto
	end
	-- Handle exceptions by prefix
	local search = ((prefix == 'd' and "ItemByTitle/enwiki/") or "Search/")..args[1]
	local sitelink = prefix == 'd' and args.qid
    local page = args[prefix]
    local info = sisterInfo[prefix]
    -- special case handling of author and cookbook
    local subtype = nil
    if prefix == 's' then
    	subtype = handleSubtype({prefix='s',qid=args.qid,subtype=args.author,page=page[1],
    		                    ns='Author:',info=nil,default=args[1]})
    elseif prefix == 'b' then
    	subtype = handleSubtype({prefix='b',qid=args.qid,subtype=args.cookbook,page=page[1],
    		                    ns='Cookbook:',info='Recipes',default=args[1]})
    end
    if subtype then
        page[1] = subtype.page or page[1]
		search = subtype.search or search
		sitelink = subtype.sitelink or sitelink
		info = subtype.info or info
	end
    if prefix == 'voy' then
    	if not args.bar then
    		info = "Travel information"
    	end
    	if page[1] then
    		if mw.ustring.match(page[1],"phrasebook") then
    			info = "Phrasebook"
    		end
    	elseif page[2] or args.auto then
    		sitelink = sitelink or fetchWikidata('voy',args.qid)
    		if sitelink and mw.ustring.match(sitelink,"phrasebook") then
    			info = "Phrasebook"
    		end
		end
    end
    info = args.information or info
    if prefix == 'c' then
    	local commons = commonsLinks(args, page)
    	search = commons.search
    	sitelink = commons.link
    end
    prefix = (prefix == 'species_author' and 'species') or prefix
    local logo = logo[prefix]
    local name = sisterName[prefix]
    local prep = "??"
    if mw.ustring.sub(prefix,1,2) == 'iw' then
    	local lang = nil
    	local iw_arg = args[prefix]
    	if iw_arg[1] then
    		lang = iw_arg[1]
    	elseif iw_arg[2] then
    		local P424 = mw.wikibase.getBestStatements(args.qid, "P424")[1]
	        if P424 and P424.mainsnak.datavalue then
	        	lang = P424.mainsnak.datavalue.value
	        end
	    end
		if lang == nil then
			return nil
		end
	    prefix = ':'..lang
	    page[1] = ""
	    page[2] = true
	    local langname = mw.language.fetchLanguageName( lang, 'en')
	    if not langname or #langname == 0 then
	    	return nil
	    end
	    info = langname..' '..info
	    prep = "of"
    end
    return genSisterLink({
    	page,
    	auto=args.auto,
    	qid=args.qid,
    	logo=logo,
    	name=name,
    	prep=prep,
    	sitelink=sitelink,
    	default=default,
    	sisterPrefix = prefix,
    	search=search,
    	information=info}, tracking)
end

local function templatestyles_page(is_bar)
	local sandbox = inSandbox and 'sandbox/' or ''
	if is_bar then
		return mw.ustring.format(
			'Module:Sister project links/bar/%sstyles.css',
			sandbox
		)
	end
	return mw.ustring.format(
		'Module:Sister project links/%sstyles.css',
		sandbox
	)
end

-- Function to create html containers for sister project link list
-- Arguments:
--   args = table of arguments
--      args.position: if 'left', position links to left
--      args.collapsible: if non-empty, make box collapsible. If 'collapse', start box hidden
--      args.style: CSS style string appended to end of default CSS
--      args.display: boldface name to display
local function createSisterBox(sisterList, args)

	local list = mw.html.create('ul')
    for i, link in ipairs(sisterList) do
	  local li = list:tag('li')
	  -- html element for 27px-high logo
	  local logoSpan = li:tag('span')
	  logoSpan:addClass(sandbox("sister-logo"))
	  logoSpan:wikitext("[[???:"..link.logo.."|20x20px|middle|link=|alt=]]")
	  -- html element for link
	  local linkspan = li:tag('span')
	  linkspan:addClass(sandbox("sister-link"))
	  local linkText = "[["..link.prefix..":"..link.link.."|"..link.information .."]] "..link.prep.." "..link.name
	  linkspan:wikitext(linkText)
    end
    list:allDone()
    
    return sideBox({
		role = 'navigation',
		labelledby = 'sister-projects',
		class = sandbox("sister-box") .. ' sistersitebox plainlinks',
		position = args.position,
		style = args.style,
		abovestyle = args.collapsible and 'clear: both' or nil,
		above = mw.ustring.format(
			"%s ?? [[?????????:?????? ?????|<span id=\"sister-projects\">???????? ???????</span>]]",
			args.display or args[1]
		),
		text = tostring(list),
		collapsible = args.collapsible,
		templatestyles = templatestyles_page()
	})
end

local function createSisterBar(sisterList,args)
	local nav = mw.html.create( 'div' )
	nav:addClass( 'noprint')
	nav:addClass( 'metadata')
	nav:addClass( sandbox('sister-bar'))
	nav:attr( 'role', 'navigation' )
	nav:attr( 'aria-label' , 'sister-projects' )
	local header = nav:tag('div')
	header:addClass(sandbox('sister-bar-header'))
	local pagename = header:tag('b')
	pagename:wikitext(args.display or args[1])
	local headerText = " ?? [[?????????:?????? ?????|"
	headerText = headerText..'<span id="sister-projects" style="white-space:nowrap;">???????? ???????</span>]]:'
	header:wikitext(headerText)
	if #sisterList == 1 and args.trackSingle then
		header:wikitext("[[?????:????? ?? ???? ???? ???????? ???????]]")
	end
	local container = nav:tag('ul')
	container:addClass(sandbox('sister-bar-content'))
	for _, link in ipairs(sisterList) do
		local item = container:tag('li')
		item:addClass(sandbox('sister-bar-item'))
		local logoSpan = item:tag('span')
		logoSpan:addClass(sandbox('sister-bar-logo'))
		logoSpan:wikitext("[[???:"..link.logo.."|21x19px|link=|alt=]]")
		local linkSpan = item:tag('span')
		linkSpan:addClass(sandbox('sister-bar-link'))
		linkSpan:wikitext("<b>[["..link.prefix..":"..link.link.."|"..link.information .."]]</b> "..link.prep.." "..link.name)
	end
	return nav
end

function p._main(args)
	local titleObject = mw.title.getCurrentTitle()
	local ns = titleObject.namespace
	-- find qid, either supplied with args, from search string, or from current page
	args.qid = args.qid or mw.wikibase.getEntityIdForTitle(args[1] or "") or mw.wikibase.getEntityIdForCurrentPage()
	args.qid = args.qid and args.qid:upper()
	-- search string defaults to PAGENAME
    args[1] = args[1] or mw.wikibase.getSitelink(args.qid or "") or titleObject.text
    -- handle redundant "commons"/"c" prefix
    args.c = args.c or args.commons
	-- Canonicalize all sister links (handle yes/no/empty)
	for _, k in ipairs(prefixList) do
		args[k] = canonicalize(args[k])
	end
	-- Canonicalize cookbook
	args.cookbook = canonicalize(args.cookbook)
	args.b = mergeArgs({args.b,args.cookbook})
	args.cookbook = args.cookbook[2]
	-- handle trackSingle parameter
	if args.trackSingle == nil then
    	args.trackSingle = true
	end
    if ns ~= 0 and ns ~= 14 then
    	args.trackSingle = false
    end
    -- Canonicalize general parameters
for _,k in pairs({"auto","commonscat","author","bar","tracking","sandbox","trackSingle"}) do
    -- ????? ??? auto
    if k == "auto" then
        args[k] = true
    else
        args[k] = canonicalize(args[k])[2]
    end
end
	-- Initialize tracking categories if main namespace
	local tracking = (args.tracking or ns == 0) and {}
    local sisterList = {}
    local prefix
    -- Loop through all sister projects, generate possible links
    for _, prefix in ipairs(prefixList) do
    	local link = sisterLink(prefix, args, tracking)
    	if link then
			table.insert(sisterList, link)
		end
	end
    local box = mw.html.create()
    if args.bar and #sisterList > 0 then
    	box:wikitext(mw.getCurrentFrame():extensionTag{
			name = 'templatestyles', args = { src = templatestyles_page(true) }
    	})
    	box:node(createSisterBar(sisterList,args))
    elseif #sisterList == 1 then
    	-- Use  single sister box instead of multi-sister box
    	local sister = sisterList[1]
    	local link =  "[["..sister.prefix..":"..sister.link.."|<b>"..(args.display or args[1]).."</b>]]"
    	if sister.name == 'Commons' then
    		sister.name = 'Wikimedia Commons' -- make single sister commons box look like {{Commons}}
    	end
    	local text = "?? " .. sister.name .. " ???? ??? ??? ?? " .. link .. "."
    	if sister.name == 'Wikipedia' then  -- make single sister interwiki box look like {{InterWiki}}
    		text = "[["..sister.prefix..":"..sister.link.."|<b>"..sister.information.."</b>]] "..sister.prep.." [[Wikipedia]], the free encyclopedia"
    	end
    	box:wikitext(sideBox({
    		role = 'navigation',
    		position=args.position,
    		image="[[???:"..sister.logo.."|30x30px|class=noviewer|alt=|link=]]",
    		metadata='no',
    		class='plainlinks sistersitebox',
    	    text=text,
			templatestyles = templatestyles_page()
    	}))
    elseif #sisterList > 0 then
    	-- else use sister box if non-empty
    	box:wikitext(createSisterBox(sisterList,args))
    end
    if #sisterList == 0 and args.auto then
    	local generateWarning = require('Module:If preview')._warning
    	box:wikitext(generateWarning({"?? ??? ?????? ??? ????? ?????? ????? ?? ???? ??????. ??? auto=0"}))
    end
	-- Append tracking categories to container div
	-- Alpha ordering is by sister prefix
	if tracking then
		for k, v in pairs(tracking) do
			box:wikitext("[[?????:"..trackingType[k].."|"..v.."]]")
		end
    	if #sisterList == 0 then
    		box:wikitext("[[?????:????? ?? ???? ????? ????? ????]]")
    	end
	end
	return tostring(box)
end

-- Main entry point for generating sister project links box
function p.main(frame)
	local args = getArgs(frame,{frameOnly=false,parentOnly=false,parentFirst=false})
	return p._main(args)
end

-- Lua entry point for generate one sister link
function p._sisterlink(args)
    local prefix = args.prefix
	-- Canonicalize all sister links (handle yes/no/empty)
	for _, k in ipairs(prefixList) do
		args[k] = canonicalize(args[k])
	end
	-- Canonicalize cookbook
	args.cookbook = canonicalize(args.cookbook)
	args.b = mergeArgs({args.b,args.cookbook})
	args.cookbook = args.cookbook[2]
    -- Canonicalize general parameters
    for _,k in pairs({"auto","commonscat","author"}) do
    	args[k] = canonicalize(args[k])[2]
    end
    args[1] = args[1] or mw.title.getCurrentTitle().text
	args.qid = args.qid or mw.wikibase.getEntityIdForCurrentPage()
	args.qid = args.qid and args.qid:upper()
	local link = sisterLink(prefix, args,nil)
	if not link then
		return ""
	end
	return "[["..link.prefix..":"..link.link.."|"..link.information .."]] "..link.prep.." "..link.name
end

-- Template entry point for generating one sister link
function p.link(frame)
	local args = getArgs(frame)
	return p._sisterlink(args)
end

return p
前位子宫是什么意思 血压偏高吃什么药 32周岁属什么生肖 吴京和吴樾什么关系 羊水穿刺是检查什么
什么病可以办低保 什么是黄精 人嗜睡是什么原因 华人是什么意思 焖子是什么
循环利息是什么意思 结肠炎挂什么科 皇后是什么意思 颈椎挂什么科室 煜字五行属什么
八面玲珑什么生肖 高晓松为什么进监狱 反绒皮是什么材质 张菲和费玉清什么关系 精液带血是什么原因
米粉和米线有什么区别hcv8jop8ns2r.cn 12年义务教育什么时候实行hcv9jop2ns0r.cn 胃大肚子大是什么原因bfb118.com 甲低是什么原因造成的hcv8jop5ns9r.cn 累觉不爱是什么意思hcv8jop2ns1r.cn
感统失调是什么意思hcv9jop1ns3r.cn 为什么打死不吃骡子肉hcv7jop6ns3r.cn 外伤挂什么科520myf.com 属猪本命佛是什么佛fenrenren.com 茭白是什么hcv8jop6ns9r.cn
泌乳素高是什么原因引起的0297y7.com jk制服是什么意思hcv8jop8ns6r.cn 为什么最迷人的最危险是什么歌beikeqingting.com 肩胛骨突出是什么原因hcv9jop4ns0r.cn 吃什么降羊水最快hcv8jop4ns4r.cn
离岗是什么意思shenchushe.com 房产税什么时候开始征收hcv9jop6ns8r.cn 什么杀精子最厉害fenrenren.com 孺子是什么意思adwl56.com 花苞裤不适合什么人穿hcv9jop0ns6r.cn
百度