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
You Raise Me Up - Học cách sống hạnh phúc dù cuộc đời chỉ đạt 20 - 30 điểm
You Raise Me Up - Học cách sống hạnh phúc dù cuộc đời chỉ đạt 20 - 30 điểm
Đây là một cuộc hành trình để lấy lại sự tự tin cho một kẻ đã mất hết niềm tin vào chính mình và cuộc sống
[Review sách] Vừa nhắm mắt vừa mở cửa sổ -
[Review sách] Vừa nhắm mắt vừa mở cửa sổ - "Bản nhạc" trong trẻo dành cho người lớn
Ngọt ngào, trong trẻo là những cụm từ mình muốn dành tặng cho cuốn sách Vừa nhắm mắt vừa mở cửa sổ của nhà văn Nguyễn Ngọc Thuần.
Nhân vật Yui trong Jigokuraku
Nhân vật Yui trong Jigokuraku
Yui (結ゆい) là con gái thứ tám của thủ lĩnh làng Đá và là vợ của Gabimaru.
Nhân vật Kugisaki Nobara - Jujutsu Kaisen
Nhân vật Kugisaki Nobara - Jujutsu Kaisen
Kugisaki Nobara (釘くぎ崎さき野の薔ば薇ら Kugisaki Nobara?, Đanh Kì Dã Tường Vi) là nhân vật chính thứ ba (từ gốc: tritagonist) của bộ truyện Jujutsu Kaisen