Mô đun:Autovirusbox

require('strict')
local ItalicTitle = require('Mô đun:Italic title')
local p = {} -- functions made public
local l = {} -- internal functions, kept separate

-- =============================================================================
-- main implements Template:Virusbox; see the documentation of that template
-- for details.
-- =============================================================================

function p.main(frame)
	local args
	if frame.args['direct'] == 'yes' then args = frame.args
	else args = frame:getParent().args end
	-- ---------------------------------------------------------------------
	-- pick up taxobox parameters from the caller that need to be processed;
	-- most are passed on unchanged
	-- ---------------------------------------------------------------------
	local name = args['name'] or ''
	local taxon = args['taxon'] or ''
	local parent = args['parent'] or ''
	local species = args['species'] or ''
	local strain = args['strain'] or ''
	local serotype = args['serotype'] or ''
	local virus = args['virus'] or ''
	local displayParents = args['display_parents'] or '1'
--[[
	local authority = args['authority'] or ''
	local parentAuthority = args['parent_authority'] or ''
	local gParentAuthority = args['grandparent_authority'] or ''
	local ggParentAuthority = args['greatgrandparent_authority'] or ''
	local gggParentAuthority = args['greatgreatgrandparent_authority'] or ''
	local typeGenusAuthority = args['type_genus_authority'] or ''
]]
	local subdivision = args['subdivision'] or ''
	local subdivisionRanks = args['subdivision_ranks'] or ''
	local subdivisionRef = args['subdivision_ref'] or args['subdivision ref'] or ''

	-- ------------------------------------------------------
	-- set the taxobox parameters determined by this function
	-- ------------------------------------------------------
	local autoTaxon, autoTaxonType, infraTaxon, infraTaxonRank, targetTaxon, targetTaxonRank = l.paramChk(frame, taxon, parent, species, strain, serotype, virus)
	-- set default taxobox name/title
	local italicsRequired = frame:expandTemplate{ title = 'Is italic taxon', args = {targetTaxonRank, virus='yes'} } == 'yes' and args["italic_title"] ~= "no"
	if name == '' then
		if autoTaxonType == 'ERROR' then
			name = '<span class="error">ERROR: parameter(s) specifying taxon are incorrect; see [[Template:Virusbox/doc#Usage|documentation]]</span>'
		else
			name = targetTaxon
			if italicsRequired then
				name = "''" .. targetTaxon .. "''"
			end
		end
	end
	-- the page name (title) should be italicized if it's the same as the target taxon and that is italicized
	local currentPage = mw.title.getCurrentTitle()
	local pagename = currentPage.text
	if pagename == targetTaxon then
		if italicsRequired then ItalicTitle._main({}) end
	end
	-- is the auto-taxon name bold or linked (i.e. will it be the last row in the taxobox or not)?
	local boldFirst = 'bold' 
	if autoTaxonType == 'PARENT' then boldFirst = 'link' end
	-- italicize and link species name, or embolden if nothing below
	if species ~= '' then
		if infraTaxon ~= '' then
			species = "''[["..species.."]]''"
		else
			species = "'''''"..species.."'''''"
		end
	end
	-- embolden lowest rank
	if infraTaxon ~= '' then
		infraTaxon = "'''"..infraTaxon.."'''"
	end
	-- set offset and fix display_parents if there are ranks below autoTaxon
	local offset = 0
	if infraTaxon ~= '' then offset = offset + 1 end
	if species ~= '' then offset = offset + 1 end
	if offset ~= 0 then
		displayParents = tostring(tonumber(displayParents) - offset)
	end
	-- fill in a missing subdivision_ranks parameter
	if subdivision ~= '' and subdivisionRanks == '' then
		subdivisionRanks =  frame:expandTemplate{ title = 'Children rank', args = {targetTaxonRank} }
	end
	-- ------------------------------------------------
	-- now call Taxobox/core with all of its parameters
	-- ------------------------------------------------
	local res = frame:expandTemplate{ title = 'Taxobox/core', args =
		{ ['edit link'] = 'e',
		  virus = 'yes',
		  colour = frame:expandTemplate{ title = 'Taxobox colour', args = { 'virus' } },
		  name = name,
		  parent = autoTaxon,
		  bold_first = boldFirst,
--[[
		  authority = authority,
          parent_authority = parentAuthority,
		  grandparent_authority = gparentAuthority,
		  grandparent_authority = gparentAuthority,
		  greatgrandparent_authority = ggparentAuthority,
		  greatgreatgrandparent_authority = gggparentAuthority,
		  offset = tostring(offset),
]]		  
		  image = args['image'] or '',
		  image_upright = args['image_upright'] or '',
		  image_alt = args['image_alt'] or '',
		  image_caption = args['image_caption'] or '',
		  image2 = args['image2'] or '',
		  image2_upright = args['image2_upright'] or '',
		  image2_alt = args['image2_alt'] or '',
		  image2_caption = args['image2_caption'] or '',
		  species = species,
		  virus_infrasp = infraTaxon,
		  virus_infrasp_rank =  infraTaxonRank,
		  display_taxa = displayParents,
		  type_genus = args['type_genus'] or '',
		  --type_genus_authority = args['type_genus_authority'] or '',
		  --type_species = args['type_species'] or '',
		  --type_species_authority = args['type_species_authority'] or ''
		  subdivision_ranks = subdivisionRanks,
		  subdivision_ref = subdivisionRef,
		  subdivision = subdivision,
		  type_strain = args['type_strain'] or '',
		  synonyms = args['synonyms'] or '',
		  synonyms_ref = args['synonyms_ref'] or '',
		  range_map = args['range_map'] or '',
		  range_map_upright = args['range_map_upright'] or '',
		  range_map_alt = args['range_map_alt'] or '',
		  range_map_caption = args['range_map_caption'] or '',
		} }
	-- put page in error-tracking category if required
	if autoTaxonType == 'ERROR' then
		res = res .. frame:expandTemplate{ title = 'Main other', args = {'[[Thể loại:Virusboxes with incorrect parameters that specify taxon]]'} }
	end
	return res
end

-- =============================================================================
-- paramChk checks the taxon-specifying parameters for consistency, selecting
-- the target taxon (the taxon that is the target of the taxobox), the
-- infra-taxon (the taxon below species level), if any, and the 'auto-taxon',
-- the taxon that is the entry point into the automated taxobox system.
-- =============================================================================

function l.paramChk(frame, taxon, parent, species, strain, serotype, virus)
	-- set target taxon and infra-taxon
	local infraTaxon = ''
	local infraTaxonRank = ''
	local targetTaxon
	local targetTaxonRank
	if strain ~= '' then
		infraTaxon = strain
		infraTaxonRank = 'strain'
		targetTaxon = infraTaxon
		targetTaxonRank = infraTaxonRank
	elseif serotype ~= '' then
		infraTaxon = serotype
		infraTaxonRank = 'serotype'
		targetTaxon = infraTaxon
		targetTaxonRank = infraTaxonRank
	elseif virus ~= '' then
		infraTaxon = virus
		infraTaxonRank = 'virus'
		targetTaxon = infraTaxon
		targetTaxonRank = infraTaxonRank
	elseif species ~= '' then
		targetTaxon = species
		targetTaxonRank = 'species'
	else
		targetTaxon = taxon
		targetTaxonRank = frame:expandTemplate{ title = 'Taxon info', args = {targetTaxon, 'rank' } }
	end
	-- set the autotaxon (entry into the automated taxobox system) if the
	-- parameters are valid; the default is invalid
	local autoTaxon = ''
	local autoTaxonType = 'ERROR'
	if taxon ~= '' then
		if parent..species..infraTaxon  == '' then
			autoTaxon = taxon
			autoTaxonType = 'TAXON'
		end
	elseif parent ~= '' and  (species ~='' or infraTaxon ~= '') then
		autoTaxon = parent
		autoTaxonType = 'PARENT'
	end
	-- check for multiple infra-taxa
	-- This is not this module's limitation: go blame Template:Taxobox/core!
	local count = 0
	if strain ~= '' then count = count + 1 end
	if serotype ~= '' then count = count + 1 end
	if virus ~= '' then count = count + 1 end
	if count > 1 then autoTaxonType = 'ERROR' end
	return autoTaxon, autoTaxonType, infraTaxon, infraTaxonRank, targetTaxon, targetTaxonRank
end

return p
Chúng tôi bán
Bài viết liên quan
Vì sao Arcane là một tác phẩm nghệ thuật tinh tế
Vì sao Arcane là một tác phẩm nghệ thuật tinh tế
Vì sao 'Arcane' là một tác phẩm nghệ thuật tinh tế? Nó được trình chiếu cho khán giả toàn cầu nhưng dựa trên tiêu chuẩn khắt khe để làm hài lòng game thủ
3 nhóm kỹ năng kiến thức bổ ích giúp bạn trở thành một ứng viên sáng giá
3 nhóm kỹ năng kiến thức bổ ích giúp bạn trở thành một ứng viên sáng giá
Hiện nay với sự phát triển không ngừng của xã hội và công nghệ, việc chuẩn bị các kỹ năng bổ ích cho bản thân
Haruka Hasebe - Classroom of the Elite
Haruka Hasebe - Classroom of the Elite
Haruka Hasebe (長は谷せ部べ 波は瑠る加か, Hasebe Haruka) là một trong những học sinh của Lớp 1-D.
Review film: Schindler's List (1993)
Review film: Schindler's List (1993)
Người ta đã lùa họ đi như lùa súc vật, bị đối xữ tàn bạo – một điều hết sức đáng kinh ngạc đối với những gì mà con người từng biết đến