就坡下驴什么意思| 什么饮料最解渴| 什么药能治痛风| 皮肤痒有什么特效药| 日本豆腐是什么做的| 首鼠两端是什么意思| 女性血常规都检查什么| 电灯泡什么意思| g6pd是什么意思| 14时是什么时辰| 男士检查精子挂什么科| 乌龟代表什么数字| 什么是代孕| 鸭屎香为什么叫鸭屎香| 靖五行属性是什么| 什么驱蚊效果最好| 宜五行属什么| 透支是什么意思| 89年五行属什么| 自媒体是什么| 肝血管瘤有什么症状表现| 男性尿道痒吃什么药| 喜欢吃酸的人是什么体质| 蜂鸟是什么鸟| 员额制是什么意思| 沙棘对肝脏有什么好处| 恶露后期为什么是臭的| dell是什么牌子的电脑| 太妃糖为什么叫太妃糖| 螯合剂是什么| 自由意志是什么意思| 什么是五谷| 自然周是什么意思| 为什么会起荨麻疹| 一什么| 黔鱼是什么鱼| 麻蛇是什么蛇| 膝盖痒是什么原因| 阴道出血吃什么药| 法国用什么货币| 拉不出来屎是什么原因| 产妇可以吃什么水果| 提肛有什么好处| 女生读什么技校好| 甲醛中毒有什么症状| 咳嗽吃什么能治好| a股是什么| 广谱是什么意思| 肝钙化斑是什么意思| 见路不走是什么意思| 眼睛红是什么病| vampire是什么意思| 花花世界不必当真是什么歌| 为什么医者不自医| 什么食物蛋白质含量高| 嘴子是什么意思| 脑白质病变是什么意思| 三个土字念什么字| 一月五日是什么星座| 一晚上尿五六次是什么原因| 什么的雪人| 三个火字念什么| 钢琴十级什么水平| 下象棋有什么好处| 防中暑喝什么水| 香蕉不能和什么同吃| 肝内钙化灶是什么意思| 血塞通治什么病| 鱼腥草治什么病| 蛊惑什么意思| 多是什么结构的字| 孕妇吃香蕉对胎儿有什么好处| 黄鼠狼为什么怕鹅| 来月经量少吃什么可以增加月经量| 腿毛旺盛是什么原因| 红菜是什么菜| 小怪兽是什么| 尿道口为什么叫马眼| 经常流鼻血什么原因| 7.17是什么日子| 慢性阑尾炎吃什么药好| 胆汁反流性胃炎吃什么药| 胸腔疼痛是什么原因| 系带割掉了有什么影响| 女人气虚吃什么补最快| 什么情况下会缺钾| 随性是什么意思| 毫无保留什么意思| seiko手表是什么牌子| 喉咙痛吃什么饭菜好| 中国地图像什么| 二道贩子是什么意思| 贵圈是什么意思| 什么人容易得白血病| 谷丙转氨酶高是什么原因| 花心什么意思| 10月是什么季节| 灼热是什么意思| 处女女和什么星座最配| pending是什么状态| 庄子是什么学派| 坐骨神经痛是什么原因引起的| 做完人流可以吃什么| 维生素c高是什么原因| 梦见蛇是什么征兆| 口腔溃疡吃什么药好| 本科属于什么学位| oioi是什么牌子| 冲蛇煞西是什么意思| 鸡肉和什么相克| 皮疹是什么| 金开什么字| 子宫内膜2mm说明什么| 脸色发青是什么原因引起的| hcr是什么意思| 生僻字是什么意思| 92年是什么年| 初级会计什么时候拿证| 食管裂孔疝是什么意思| 革兰氏阳性菌是什么病| 湿疹什么症状| 6月19是什么星座| 世界上最小的长度单位是什么| 尺码m是什么意思| 耳朵里长痘是什么原因| 雄性激素过高是什么原因| 教皇是什么意思| 胸部周围痒是什么原因| 孕反什么时候结束| 胯骨在什么位置图片| http是什么| seiko是什么牌子| 黄花苗泡水喝有什么作用| 公丁香和母丁香有什么区别| 降钙素原高是什么原因| 恳请是什么意思| 美国为什么不敢打朝鲜| 筋膜刀是什么| 巴基斯坦是什么人种| 睾丸长什么样子| 空调制热效果不好什么原因| 宝宝嘴巴臭臭的是什么原因| 胸口疼吃什么药| 手术后吃什么营养品好| 囊腺瘤是什么| 剑走偏锋是什么意思| 步后尘是什么意思| 办香港通行证要准备什么材料| xl是什么码| sap是做什么的| 心什么神往| 公安局属于什么机关| 有小肚子是什么原因| 自性是什么意思| 好梦是什么意思| 大姨妈期间适合吃什么水果| 孕激素六项检查什么时候做| 梦见家被偷了什么预兆| 如意是干什么用的| 为什么会得盆腔炎| 周岁什么意思| 血脂高会导致什么后果| 阴阳两虚吃什么药最好| 工科和理科有什么区别| 铁蛋白偏高是什么意思| 少叙痣是什么意思| 九月三日是什么日子| 乳腺囊性增生是什么意思| 盆腔炎是什么原因造成的| 阑尾炎在什么位置| 人为什么会过敏| 晕血是什么症状| cho是什么意思| 人得布病什么症状| 凌字五行属什么| 琼瑶剧是什么意思| 乳腺囊实性结节是什么意思| pw是什么意思| 活色生香的意思是什么| 当兵有什么好处| 硫脲是什么| 迪士尼狗狗叫什么名字| 洋葱和什么不能一起吃| 一国两制什么时候提出的| 5月22日是什么星座| 王维有什么之称| 皮的偏旁是什么| 哺乳期感冒能吃什么药| 认知障碍是什么病| 结肠炎不能吃什么食物| 奇脉见于什么病| 献血前吃什么东西最好| 人为什么怕死| 泄泻什么意思| 做梦梦见考试是什么意思| 男人为什么好色| 21三体高风险是什么原因造成的| 笑气是什么气体| 徒木立信是什么意思| 倾国倾城是什么生肖| 懒羊羊的什么| 囊肿挂什么科| 什么水果含糖量最低| 牛肉不能和什么食物一起吃| 囊性结构是什么意思| 食管裂孔疝什么意思| 国企属于什么编制| 两个人可以玩什么| 带沉香手串有什么好处| 梦见摘豆角是什么预兆| 天眼是什么意思| 烧心是什么原因引起的| 两棵树是什么牌子| 儿保做些什么检查项目| 人鱼线是什么| 西湖醋鱼是什么鱼| 米线是用什么做的| 颈部淋巴结肿大是什么原因| 梦见打老虎是什么预兆| 女人脾虚吃什么药最好| 什么时候降温| 穷思竭虑什么意思| 南辕北辙是什么意思| 胰岛素偏高是什么意思| 做包皮手术有什么好处| 赤道2什么时候上映| 什么运动降血糖最快| 反胃是什么意思| 冬练三九夏练三伏是什么意思| 棉纺是什么面料| 休克的本质是什么| 入定是什么意思| 手臂长痘痘是什么原因| 夏天白鸽煲什么汤最好| 多吃火龙果有什么好处和坏处| 什么是半衰期| 儿童红眼病用什么眼药水| 是什么数学符号| 生理曲度存在是什么意思| 毛鸡蛋是什么| 镇党委副书记是什么级别| 为什么会骨盆前倾| 水瓶女和什么星座最配| 弥留之际什么意思| 牛皮癣是什么样的| 11月25日什么星座| 美国属于什么洲| 梵克雅宝为什么那么贵| 抽血挂什么科| 小黄人是什么意思| 排尿困难是什么原因男性| 胃功能四项检查是什么| 发烧适合吃什么水果| 断掌有什么说法| 水瓶座的性格是什么| 断念是什么意思| 阳历是什么| 排湿气最快的方法吃什么| 解脲支原体阳性吃什么药| 5201314是什么意思| 电泳是什么意思| 退役和退伍有什么区别| 古曼童是什么| 胎脂是什么原因造成的| 百度Jump to content

河北で明代の石の重り発見 400年前の塩業の繁栄示す

Permanently protected module
From Wikipedia, the free encyclopedia

require('strict')

local code_open_tag = '<code class="cs1-code">';								-- cs1-code class defined in Module:Citation/CS1/styles.css
local lock_icons = {															--icon classes are defined in Module:Citation/CS1/styles.css
	['registration'] = {'id-lock-registration', 'Free registration required'},
	['limited'] = {'id-lock-limited', 'Free access subject to limited trial, subscription normally required'},
	['subscription'] = {'id-lock-subscription', 'Paid subscription required'},
	}


--[[--------------------------< T A R G E T _ C H E C K >------------------------------------------------------

check to see if target of harvc exists in the page somewhere. Uses the target check mechanism from Module:Footnotes

setting |ignore-errors=yes in {{harvc}} will override this check

]]

local function target_check (anchor_id, ignore)
    local whitelist_check = require('Module:Footnotes').target_check
    local args = {ignore=ignore, template='Harvc', show=true}
    return whitelist_check(anchor_id, args)
end


--[[--------------------------< I S _ S E T >------------------------------------------------------------------

Whether variable is set or not.  A variable is set when it is not nil and not empty.

]]

local function is_set( var )
	return not (var == nil or var == '');
end


--[[--------------------------< C H E C K _ Y E A R S >--------------------------------------------------------

evaluates params to see if they are one of these forms with or without lowercase letter disambiguator (same as in
Module:Footnotes):
	YYYY
	n.d.
	nd	
	c. YYYY
	YYYY–YYYY	(separator is endash)
	YYYY–YY		(separator is endash)

when anchor_year present, year portion must be same as year param and must have disambiguator

returns empty string when params have correct form; error message else

]]

local function check_years (year, anchor_year)
	local y, ay;
	
	if not is_set (year) then													-- year is required so return error message when not set
		return ' missing ' .. code_open_tag .. '|year=</code>.';
	end
	
	local patterns = {															-- allowed year patterns from Module:Footnotes (captures added here)
		'^(%d%d%d%d?)%l?$',														-- YYY or YYYY
		'^(n%.d%.)%l?$',														-- n.d.
		'^(nd)%l?$',															-- nd
		'^(c%. %d%d%d%d?)%l?$',													-- c. YYY or c. YYYY
		'^(%d%d%d%d–%d%d%d%d)%l?$',												-- YYYY–YYYY
		'^(%d%d%d%d–%d%d)%l?$'													-- YYYY–YY
		}

	for _, pattern in ipairs (patterns) do										-- spin through the patterns
		y = year:match (pattern);												-- y is the year portion
		if y then
			break;																-- when y is set, we found a match so done
		end
	end

	if not y then
		return ' invalid ' .. code_open_tag .. '|year=</code>.';												-- y not set, so year is malformed
	end
	
	if is_set (anchor_year) then												-- anchor_year is optional
		for _, pattern in ipairs (patterns) do									-- spin through the patterns
			ay = anchor_year:match (pattern);									-- ay is the year portion
			if ay then
				break;															-- when ay is set, we found a match so done
			end
		end

		if not ay then
			return ' invalid ' .. code_open_tag .. '|anchor-year</code>.';		-- ay not set, so anchor_year is malformed
		end
		
--		if not anchor_year:match ('%l$') then
--			return ' ' .. code_open_tag .. '|anchor-year=</code> missing dab.';	-- anchor_year must end with a disambiguator letter
--		end
	
		if y ~= ay then
			return ' ' .. code_open_tag .. '|year=</code> / ' .. code_open_tag .. '|anchor-year=</code> mismatch.';	-- 'year' portions of year and anchor_year must be the same
		end
	end
	
	return '';																	-- both years are good; empty string for concatenation
end


--[[--------------------------< M A K E _ N A M E >------------------------------------------------------------

Assembles last, first, link, or mask into a displayable contributor name.

]]

local function make_name (last, first, link, mask)
	local name = last;
	
	if is_set (first) then
		name = name .. ', ' .. first;											-- concatenate first onto last
	end
	
	if is_set (link) then
		name = '[[' .. link .. '|' .. name .. ']]';								-- form a wikilink around the name
	end
	
	if is_set (mask) then														-- mask this author
		if tonumber(mask) then
			name = string.rep ('—', mask)										-- make a string that number length of mdashes
		else
			name = mask;														-- mask is not a number so use the mask text
		end
	end
	
	return name;
end


--[[--------------------------< C O R E >----------------------------------------------------------------------

Assembles the various parts provided by the template into a properly formatted bridging citation.  Adds punctuation
and text; encloses the whole within a span with id and class attributes.

This creates a CITEREF anchor from |last1= through |last4= and |year=.  It also creates a CITEREF link from |in1= through
|in4= and |year=.  It is presumed that the dates of contributions are the same as the date of the enclosing work.

Even though not displayed, a year parameter is still required for the CITEREF anchor

]]

local function core( args )
	local span_open_tag;														-- holds CITEREF and css
	local contributors = '';													-- chapter or contribution authors
	local source = '';															-- editor/author date list that forms a CITEREF link to a full citation
	local in_text = ' In ';

-- form the CITEREF anchor
	if is_set (args.id) then
		args.id = mw.uri.anchorEncode (args.id)
		span_open_tag = '<span id="' .. args.id .. '" class="citation">';		-- for use when contributor name is same as source name
	else
		local citeref = 'CITEREF' .. table.concat (args.citeref) .. (is_set (args['anchor-year']) and args['anchor-year'] or args.year);
		citeref = mw.uri.anchorEncode (citeref);
		span_open_tag = '<span id="' .. citeref .. '" class="citation">';
	end
 
--[[
form the contributors display list:
	if |name-list-style=harv, display is similar to {{sfn}} and {{harv}}, 1 to 4 last names;
	if |display-authors= is empty or omitted, display is similar to cs1|2: display all names in last, first order 
	if |display-authors=etal then displays all author names in last, first order and append et al.
	if value assigned to |display-authors= is less than the number of author last names, displays the specified number of author names in last, first order followed by et al.
]]
	if 'harv' ~= args.name_list_style then										-- default cs1|2 style contributor list
		local i = 1;
		local count;
		local etal = false;														-- when |display-authors= is same as number of authors in contributor list
		
		if is_set (args.display_authors) then
			if 'etal' == args.display_authors:lower():gsub("[ '%.]", '') then	-- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings
				count = #args.last;												-- display all authors and ...
				etal = true;													-- ... append 'et al.'
			else
				count = tonumber (args.display_authors) or 0;					-- 0 if can't be converted to a number
				if 0 >= count then
					args.err_msg = args.err_msg .. ' invalid ' .. code_open_tag .. '|display-authors=</code>';	-- if zero, then emit error message
				end
			end
			if count > #args.last then
				count = #args.last;												-- when |display-authors= is more than the number of authors, use the number of authors
			end
			if count < #args.last then											-- when |display-authors= is less than the number of authors
				etal = true;													-- append 'et al.'
			end
		else
			count = #args.last;													-- set count to display all of the authors
		end

		while i <= count do
			if is_set (contributors) then
				contributors = contributors .. '; ' .. make_name (args.last[i], args.first[i], args.link[i], args.mask[i]);			-- the rest of the contributors
			else
				contributors = make_name (args.last[i], args.first[i], args.link[i], args.mask[i]);			-- first contributor's name
			end
			i = i+1;															-- bump the index
		end
		if true == etal then
			contributors = contributors .. ' et al.';							-- append et al.
		elseif 'amp' == args.name_list_style then
			contributors = contributors:gsub('; ([^;]+)$', ' & %1')				-- replace last separator with ' & '
		end
	else																		-- do default harv- or sfn-style contributor display
		if 4 <= #args.last then													-- four or more contributors (first followed by et al.)
			contributors = args.last[1] .. ' et al.';
		elseif 3 == #args.last then												-- three (display them all)
			contributors = args.last[1] .. ', ' .. args.last[2] .. ' &amp; ' .. args.last[3];
		elseif 2 == #args.last then												-- two (first & second)
			contributors = args.last[1] .. ' &amp; ' .. args.last[2];
		elseif 1 == #args.last then												-- just one (first)
			contributors = args.last[1];
		else
			args.err_msg = args.err_msg .. ' no authors in contributor list.';	-- this code used to find holes in the list; no more
		end
	end

--form the source author-date list
	if is_set (args.in4) and is_set (args.in3) and is_set (args.in2) and is_set (args.in1) then
		source = args.in1 .. ' et al.';
	elseif not is_set (args.in4) and is_set (args.in3) and is_set (args.in2) and is_set (args.in1) then
		source = args.in1 .. ', ' .. args.in2 .. ' &amp; ' .. args.in3;
	elseif not is_set (args.in4) and not is_set (args.in3) and is_set (args.in2) and is_set (args.in1) then
		source = args.in1 .. ' &amp; ' .. args.in2;
	elseif not is_set (args.in4) and not is_set (args.in3) and not is_set (args.in2) and is_set (args.in1) then
		source = args.in1;
	else
		args.err_msg = args.err_msg .. ' author missing from source list.'
	end

	source = source .. ' ' .. args.open .. args.year .. args.close;				-- add the year with or without brackets

--assemble CITEREF wikilink
	local anchor_id;
	local target_err_msg;
	
	if '' ~= args.ref then
		anchor_id = mw.uri.anchorEncode (args.ref)
	else
		anchor_id = mw.uri.anchorEncode(table.concat ({'CITEREF', args.in1, args.in2, args.in3, args.in4, args.year}));
	end
	
	target_err_msg = target_check (anchor_id, args.ignore);						-- see if there is a target for this anchor_id
	source = '[[#' .. anchor_id .. "|" .. source .. "]]";

-- special case for afterword, foreword, introduction, preface
	local no_quotes = ({['afterword']=true, ['foreword']=true, ['introduction']=true, ['preface']=true})[args.contribution:lower()];

--combine contribution with url to make external link
	if args.url ~= '' then
		args.contribution = '[' .. args.url .. ' ' .. args.contribution .. ']';	-- format external link

		if args['url-access'] then
			if lock_icons[args['url-access']] then
			args.contribution = table.concat ({									-- add access icon markup to this item
				'<span class="',												-- open the opening span tag; icon classes are defined in Module:Citation/CS1/styles.css
				lock_icons[args['url-access']][1],								-- add the appropriate lock icon class
				'" title="',													-- and the title attribute
				lock_icons[args['url-access']][2],								-- for an appropriate tool tip
				'">',															-- close the opening span tag
				args.contribution,
				'</span>',														-- and close the span
				});
			end
		end	
	end

	if is_set (args['anchor-year']) then
		contributors = contributors .. ' (' .. args['anchor-year'] .. ')' .. args.sepc;
	elseif args.sepc ~= contributors:sub(-1) and args.sepc .. ']]' ~= contributors:sub(-3) then
		contributors = contributors .. args.sepc;								-- add separator if not same as last character in name list (|first=John S. or et al.)
	end

-- pages and other insource location
	if args.p ~= '' then
		args.p = args.page_sep .. args.p;
	elseif args.pp ~= '' then
		args.p = args.pages_sep .. args.pp;										-- args.p not set so use it to hold common insource location info
	end      
 
	if args.loc ~= '' then
		args.p = args.p .. ', ' .. args.loc;									-- add arg.loc to args.p
	end

--wrap error messages in span and add help link
	if is_set (args.err_msg) then
		args.err_msg = '<span style="font-size:100%" class="error"> harvc:' .. args.err_msg .. ' ([[Template:Harvc|help]])</span>';
	end

	if ',' == args.sepc then
		in_text = in_text:lower();												-- CS2 style use lower case
	end

-- and put it all together
	local result = {};															-- the assemby of the above output
	table.insert (result, span_open_tag);
	table.insert (result, contributors);
	table.insert (result, no_quotes and ' ' or ' "');							-- foreword, afterword, introduction, preface contributions are not quoted; all other contributions are
	table.insert (result, args.contribution);
	table.insert (result, no_quotes and '' or '"');								-- foreword, afterword, introduction, preface contributions are not quoted; all other contributions are
	table.insert (result, args.sepc);
	table.insert (result, in_text);
	table.insert (result, source);
	table.insert (result, args.p);
	table.insert (result, args.ps);
	table.insert (result, args.err_msg);
    if not is_set(args.err_msg) then
	    table.insert (result, target_err_msg)
    end
	table.insert (result, '</span>');

	return table.concat (result);												-- make a string and done
end


--[[--------------------------< H A R V C >--------------------------------------------------------------------

Entry point from {{harvc}} template.  Fetches parent frame parameters, does a bit of simple error checking

]]

local function harvc (frame)
	local args = {
		err_msg = '',
		page_sep = ", p.&nbsp;",
		pages_sep = ", pp.&nbsp;",
		sepc = '.',
		ps = '.',
		open = '(',																-- year brackets for source year
		close = ')',
		last = {},
		first = {},
		link = {},
		mask = {},
		citeref = {}
		}

	local pframe = frame:getParent();
 
	args.contribution =  pframe.args.c or										-- chapter or contribution
				pframe.args.chapter or
				pframe.args.contribution or '';

	args.id = pframe.args.id or '';

	args.in1 = pframe.args['in'] or pframe.args.in1 or '';						-- source editor surnames; 'in' is a Lua reserved keyword
	args.in2 = pframe.args.in2 or '';
	args.in3 = pframe.args.in3 or '';
	args.in4 = pframe.args.in4 or '';

	args.display_authors = pframe.args['display-authors'];						-- the number of contributor names to display; cs1|2 format includes first names
	args.name_list_style = pframe.args['name-list-style'] or '';					-- when set to 'harv' display contributor list in sfn or harv style
	args.name_list_style = args.name_list_style:lower();						-- make it case agnostic

	if is_set (pframe.args.last) or is_set (pframe.args.last1) or
		is_set (pframe.args.author) or is_set (pframe.args.author1) then		-- must have at least this to continue
			args.last[1] = pframe.args.last or pframe.args.last1 or pframe.args.author or pframe.args.author1;		-- get first contributor's last name
			args.citeref[1] = args.last[1];										-- add it to the citeref
			args.first[1] = pframe.args.first or pframe.args.first1;			-- get first contributor's first name
			args.link[1] = pframe.args['author-link'] or pframe.args['author-link1'];	-- get first contributor's article link
			args.mask[1] = pframe.args['author-mask'] or pframe.args['author-mask1'];	-- get first contributor's article link
		
			local i = 2;														-- index for the rest of the names
			while is_set (pframe.args['last'..i]) or is_set (pframe.args['author'..i]) do	-- loop through pframe.args and get the rest of the names
				args.last[i] = pframe.args['last'..i] or pframe.args['author'..i];	-- last names
				args.first[i] = pframe.args['first'..i];						-- first names
				args.link[i] = pframe.args['author-link'..i];					-- links
				args.mask[i] = pframe.args['author-mask'..i];					-- masks
				if 5 > i then
					args.citeref[i] = args.last[i];								-- collect first four last names for CITEREF anchor
				end
				i = i + 1														-- bump the index
			end
	end

	if 0 == #args.last then														-- |last= is required
		args.err_msg = args.err_msg .. ' no authors in contributor list.';
	end

	args.p = pframe.args.p or pframe.args.page or '';							-- source page number(s) or location
	args.pp = pframe.args.pp or pframe.args.pages or '';
	args.loc = pframe.args.loc or '';
	args.ref = pframe.args.ref or pframe.args.Ref or '';						-- used to match |ref=<text> in cs1|2 source template
	args.ignore = 'yes' == pframe.args['ignore-err'];							-- suppress false-positive 'no target' errors

	if 'cs2' == pframe.args.mode then
		args.ps = '';															-- set postscript character to empty string, cs2 mode
		args.sepc = ',';														-- set seperator character to comma, cs2 mode
	end
	do																			-- to limit scope of local temp
		local temp = pframe.args.ps or pframe.args.postscript;
		
		if is_set (temp) then
			if 'none' == temp:lower() then										-- if |ps=none or |postscript=none then
				args.ps = '';													-- no postscript
			else
				args.ps = temp;													-- override default postscript
			end
		end
	end																			-- end of scope limit

	if 'yes' == pframe.args.nb then												-- if no brackets around year in link to cs1|2 template
		args.open = '';															-- unset these
		args.close = '';
	end
	
	args.url = pframe.args.url or												-- url for chapter or contribution
			pframe.args['chapter-url'] or
			pframe.args['contribution-url'] or '';
	
	args['url-access'] = pframe.args['url-access'];
	
	args.year = pframe.args.year or '';											-- required
	args['anchor-year'] = pframe.args['anchor-year'] or '';
	args.err_msg = args.err_msg .. check_years (args.year, args['anchor-year']);

	if not is_set (args.contribution) then
		args.err_msg = args.err_msg .. ' required contribution is missing.';	-- error message if source not provided
		args.contribution = args.url;											-- if set it will give us linkable text
	end
	
	if args.last[1] == args.in1 and
		args.last[2] == args.in2 and
		args.last[3] == args.in3 and
		args.last[4] == args.in4 and
		not is_set (args.id) then
			args.err_msg = args.err_msg .. ' required ' .. code_open_tag .. '|id=</code> parameter missing.';		-- error message if contributor and source are the same
	end

	return table.concat ({frame:extensionTag ('templatestyles', '', {src='Module:Citation/CS1/styles.css'}), core (args)});
end


--[[--------------------------< E X P O R T E D   F U N C T I O N S >------------------------------------------
]]

return {
	harvc = harvc
	};
葡萄什么季节成熟 百合花什么时候种植 东方是什么意思 血糖高吃什么主食 身首异处是什么意思
灵芝和什么煲汤好 月黑见渔灯的见读什么 喉咙沙哑吃什么药 钧鉴是什么意思 什么是凯格尔运动
12月16是什么星座 渐行渐远是什么意思 什么肉是碱性的 肌红蛋白高是什么原因 dna什么意思
8023是什么意思 甲亢食疗吃什么 澳门用什么币种 粘土是什么土 痰核流注什么意思
什么除湿气效果最好0735v.com 背疼挂什么科室最好hcv8jop5ns7r.cn 什么泡面最好吃hcv9jop3ns0r.cn 内内是什么意思hcv8jop7ns4r.cn 梦见游泳是什么预兆hcv8jop8ns8r.cn
大头菜又叫什么菜hcv9jop6ns6r.cn 胃粘膜损伤吃什么药hcv7jop9ns3r.cn 什么牌子的电动车好hcv8jop1ns3r.cn 癸是什么意思hcv9jop3ns4r.cn 大便羊粪状吃什么药hcv8jop4ns2r.cn
胡萝卜炒什么好吃hcv7jop4ns7r.cn 目赤是什么意思hcv9jop6ns9r.cn 四十年是什么婚hcv9jop5ns4r.cn 清淡饮食吃什么hcv8jop9ns7r.cn 梦见好多水是什么预兆hcv9jop2ns1r.cn
玫瑰糠疹用什么药naasee.com 什么东西进去是硬的出来是软的hcv8jop4ns4r.cn 黑五是什么hcv7jop5ns1r.cn 淋巴结节吃什么药最好hcv8jop4ns7r.cn 乳腺纤维瘤和乳腺结节有什么区别hcv8jop3ns0r.cn
百度