<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AAutovirusbox%2Fsandbox</id>
	<title>Module:Autovirusbox/sandbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AAutovirusbox%2Fsandbox"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Autovirusbox/sandbox&amp;action=history"/>
	<updated>2026-04-15T18:04:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Autovirusbox/sandbox&amp;diff=135343&amp;oldid=prev</id>
		<title>imported&gt;WOSlinker: use require(&#039;strict&#039;) instead of require(&#039;Module:No globals&#039;)</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Autovirusbox/sandbox&amp;diff=135343&amp;oldid=prev"/>
		<updated>2022-10-21T10:06:34Z</updated>

		<summary type="html">&lt;p&gt;use require(&amp;#039;strict&amp;#039;) instead of require(&amp;#039;Module:No globals&amp;#039;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local ItalicTitle = require(&amp;#039;Module:Italic title&amp;#039;)&lt;br /&gt;
local p = {} -- functions made public&lt;br /&gt;
local l = {} -- internal functions, kept separate&lt;br /&gt;
&lt;br /&gt;
-- =============================================================================&lt;br /&gt;
-- main implements Template:Virusbox; see the documentation of that template&lt;br /&gt;
-- for details.&lt;br /&gt;
-- =============================================================================&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args&lt;br /&gt;
	if frame.args[&amp;#039;direct&amp;#039;] == &amp;#039;yes&amp;#039; then args = frame.args&lt;br /&gt;
	else args = frame:getParent().args end&lt;br /&gt;
	-- ---------------------------------------------------------------------&lt;br /&gt;
	-- pick up taxobox parameters from the caller that need to be processed;&lt;br /&gt;
	-- most are passed on unchanged&lt;br /&gt;
	-- ---------------------------------------------------------------------&lt;br /&gt;
	local name = args[&amp;#039;name&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local taxon = args[&amp;#039;taxon&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local parent = args[&amp;#039;parent&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local species = args[&amp;#039;species&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local strain = args[&amp;#039;strain&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local serotype = args[&amp;#039;serotype&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local virus = args[&amp;#039;virus&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local displayParents = args[&amp;#039;display_parents&amp;#039;] or &amp;#039;1&amp;#039;&lt;br /&gt;
--[[&lt;br /&gt;
	local authority = args[&amp;#039;authority&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local parentAuthority = args[&amp;#039;parent_authority&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local gParentAuthority = args[&amp;#039;grandparent_authority&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local ggParentAuthority = args[&amp;#039;greatgrandparent_authority&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local gggParentAuthority = args[&amp;#039;greatgreatgrandparent_authority&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local typeGenusAuthority = args[&amp;#039;type_genus_authority&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
]]&lt;br /&gt;
	local subdivision = args[&amp;#039;subdivision&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local subdivisionRanks = args[&amp;#039;subdivision_ranks&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	local subdivisionRef = args[&amp;#039;subdivision_ref&amp;#039;] or args[&amp;#039;subdivision ref&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- ------------------------------------------------------&lt;br /&gt;
	-- set the taxobox parameters determined by this function&lt;br /&gt;
	-- ------------------------------------------------------&lt;br /&gt;
	local autoTaxon, autoTaxonType, infraTaxon, infraTaxonRank, targetTaxon, targetTaxonRank = l.paramChk(frame, taxon, parent, species, strain, serotype, virus)&lt;br /&gt;
	-- set default taxobox name/title&lt;br /&gt;
	local italicsRequired = frame:expandTemplate{ title = &amp;#039;Is italic taxon&amp;#039;, args = {targetTaxonRank, virus=&amp;#039;yes&amp;#039;} } == &amp;#039;yes&amp;#039;&lt;br /&gt;
	if name == &amp;#039;&amp;#039; then&lt;br /&gt;
		if autoTaxonType == &amp;#039;ERROR&amp;#039; then&lt;br /&gt;
			name = &amp;#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;ERROR: parameter(s) specifying taxon are incorrect; see [[Template:Virusbox/doc#Usage|documentation]]&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			name = targetTaxon&lt;br /&gt;
			if italicsRequired then&lt;br /&gt;
				name = &amp;quot;&amp;#039;&amp;#039;&amp;quot; .. targetTaxon .. &amp;quot;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- the page name (title) should be italicized if it&amp;#039;s the same as the target taxon and that is italicized&lt;br /&gt;
	local currentPage = mw.title.getCurrentTitle()&lt;br /&gt;
	local pagename = currentPage.text&lt;br /&gt;
	if pagename == targetTaxon then&lt;br /&gt;
		if italicsRequired then ItalicTitle._main({}) end&lt;br /&gt;
	end&lt;br /&gt;
	-- is the auto-taxon name bold or linked (i.e. will it be the last row in the taxobox or not)?&lt;br /&gt;
	local boldFirst = &amp;#039;bold&amp;#039; &lt;br /&gt;
	if autoTaxonType == &amp;#039;PARENT&amp;#039; then boldFirst = &amp;#039;link&amp;#039; end&lt;br /&gt;
	-- italicize and link species name, or embolden if nothing below&lt;br /&gt;
	if species ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if infraTaxon ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			species = &amp;quot;&amp;#039;&amp;#039;[[&amp;quot;..species..&amp;quot;]]&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			species = &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;quot;..species..&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- embolden lowest rank&lt;br /&gt;
	if infraTaxon ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		infraTaxon = &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;..infraTaxon..&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- set offset and fix display_parents if there are ranks below autoTaxon&lt;br /&gt;
	local offset = 0&lt;br /&gt;
	if infraTaxon ~= &amp;#039;&amp;#039; then offset = offset + 1 end&lt;br /&gt;
	if species ~= &amp;#039;&amp;#039; then offset = offset + 1 end&lt;br /&gt;
	if offset ~= 0 then&lt;br /&gt;
		displayParents = tostring(tonumber(displayParents) - offset)&lt;br /&gt;
	end&lt;br /&gt;
	-- fill in a missing subdivision_ranks parameter&lt;br /&gt;
	if subdivision ~= &amp;#039;&amp;#039; and subdivisionRanks == &amp;#039;&amp;#039; then&lt;br /&gt;
		subdivisionRanks =  frame:expandTemplate{ title = &amp;#039;Children rank&amp;#039;, args = {targetTaxonRank} }&lt;br /&gt;
	end&lt;br /&gt;
	-- ------------------------------------------------&lt;br /&gt;
	-- now call Taxobox/core with all of its parameters&lt;br /&gt;
	-- ------------------------------------------------&lt;br /&gt;
	local res = frame:expandTemplate{ title = &amp;#039;Taxobox/core/sandbox&amp;#039;, args =&lt;br /&gt;
		{ [&amp;#039;edit link&amp;#039;] = &amp;#039;e&amp;#039;,&lt;br /&gt;
		  virus = &amp;#039;yes&amp;#039;,&lt;br /&gt;
		  colour = frame:expandTemplate{ title = &amp;#039;Taxobox colour&amp;#039;, args = { &amp;#039;virus&amp;#039; } },&lt;br /&gt;
		  name = name,&lt;br /&gt;
		  parent = autoTaxon,&lt;br /&gt;
		  bold_first = boldFirst,&lt;br /&gt;
--[[&lt;br /&gt;
		  authority = authority,&lt;br /&gt;
          parent_authority = parentAuthority,&lt;br /&gt;
		  grandparent_authority = gparentAuthority,&lt;br /&gt;
		  grandparent_authority = gparentAuthority,&lt;br /&gt;
		  greatgrandparent_authority = ggparentAuthority,&lt;br /&gt;
		  greatgreatgrandparent_authority = gggparentAuthority,&lt;br /&gt;
		  offset = tostring(offset),&lt;br /&gt;
]]		  &lt;br /&gt;
		  image = args[&amp;#039;image&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  image_upright = args[&amp;#039;image_upright&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  image_alt = args[&amp;#039;image_alt&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  image_caption = args[&amp;#039;image_caption&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  image2 = args[&amp;#039;image2&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  image2_upright = args[&amp;#039;image2_upright&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  image2_alt = args[&amp;#039;image2_alt&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  image2_caption = args[&amp;#039;image2_caption&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  species = species,&lt;br /&gt;
		  virus_infrasp = infraTaxon,&lt;br /&gt;
		  virus_infrasp_rank =  infraTaxonRank,&lt;br /&gt;
		  display_taxa = displayParents,&lt;br /&gt;
		  type_genus = args[&amp;#039;type_genus&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  --type_genus_authority = args[&amp;#039;type_genus_authority&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  --type_species = args[&amp;#039;type_species&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  --type_species_authority = args[&amp;#039;type_species_authority&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
		  subdivision_ranks = subdivisionRanks,&lt;br /&gt;
		  subdivision_ref = subdivisionRef,&lt;br /&gt;
		  subdivision = subdivision,&lt;br /&gt;
		  type_strain = args[&amp;#039;type_strain&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  synonyms = args[&amp;#039;synonyms&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  synonyms_ref = args[&amp;#039;synonyms_ref&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  range_map = args[&amp;#039;range_map&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  range_map_upright = args[&amp;#039;range_map_upright&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  range_map_alt = args[&amp;#039;range_map_alt&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		  range_map_caption = args[&amp;#039;range_map_caption&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		} }&lt;br /&gt;
	-- put page in error-tracking category if required&lt;br /&gt;
	if autoTaxonType == &amp;#039;ERROR&amp;#039; then&lt;br /&gt;
		res = res .. frame:expandTemplate{ title = &amp;#039;Main other&amp;#039;, args = {&amp;#039;[[Category:Virusboxes with incorrect parameters that specify taxon]]&amp;#039;} }&lt;br /&gt;
	end&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- =============================================================================&lt;br /&gt;
-- paramChk checks the taxon-specifying parameters for consistency, selecting&lt;br /&gt;
-- the target taxon (the taxon that is the target of the taxobox), the&lt;br /&gt;
-- infra-taxon (the taxon below species level), if any, and the &amp;#039;auto-taxon&amp;#039;,&lt;br /&gt;
-- the taxon that is the entry point into the automated taxobox system.&lt;br /&gt;
-- =============================================================================&lt;br /&gt;
&lt;br /&gt;
function l.paramChk(frame, taxon, parent, species, strain, serotype, virus)&lt;br /&gt;
	-- set target taxon and infra-taxon&lt;br /&gt;
	local infraTaxon = &amp;#039;&amp;#039;&lt;br /&gt;
	local infraTaxonRank = &amp;#039;&amp;#039;&lt;br /&gt;
	local targetTaxon&lt;br /&gt;
	local targetTaxonRank&lt;br /&gt;
	if strain ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		infraTaxon = strain&lt;br /&gt;
		infraTaxonRank = &amp;#039;strain&amp;#039;&lt;br /&gt;
		targetTaxon = infraTaxon&lt;br /&gt;
		targetTaxonRank = infraTaxonRank&lt;br /&gt;
	elseif serotype ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		infraTaxon = serotype&lt;br /&gt;
		infraTaxonRank = &amp;#039;serotype&amp;#039;&lt;br /&gt;
		targetTaxon = infraTaxon&lt;br /&gt;
		targetTaxonRank = infraTaxonRank&lt;br /&gt;
	elseif virus ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		infraTaxon = virus&lt;br /&gt;
		infraTaxonRank = &amp;#039;virus&amp;#039;&lt;br /&gt;
		targetTaxon = infraTaxon&lt;br /&gt;
		targetTaxonRank = infraTaxonRank&lt;br /&gt;
	elseif species ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		targetTaxon = species&lt;br /&gt;
		targetTaxonRank = &amp;#039;species&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		targetTaxon = taxon&lt;br /&gt;
		targetTaxonRank = frame:expandTemplate{ title = &amp;#039;Taxon info&amp;#039;, args = {targetTaxon, &amp;#039;rank&amp;#039; } }&lt;br /&gt;
	end&lt;br /&gt;
	-- set the autotaxon (entry into the automated taxobox system) if the&lt;br /&gt;
	-- parameters are valid; the default is invalid&lt;br /&gt;
	local autoTaxon = &amp;#039;&amp;#039;&lt;br /&gt;
	local autoTaxonType = &amp;#039;ERROR&amp;#039;&lt;br /&gt;
	if taxon ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if parent..species..infraTaxon  == &amp;#039;&amp;#039; then&lt;br /&gt;
			autoTaxon = taxon&lt;br /&gt;
			autoTaxonType = &amp;#039;TAXON&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	elseif parent ~= &amp;#039;&amp;#039; and  (species ~=&amp;#039;&amp;#039; or infraTaxon ~= &amp;#039;&amp;#039;) then&lt;br /&gt;
		autoTaxon = parent&lt;br /&gt;
		autoTaxonType = &amp;#039;PARENT&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	-- check for multiple infra-taxa&lt;br /&gt;
	local count = 0&lt;br /&gt;
	if strain ~= &amp;#039;&amp;#039; then count = count + 1 end&lt;br /&gt;
	if serotype ~= &amp;#039;&amp;#039; then count = count + 1 end&lt;br /&gt;
	if virus ~= &amp;#039;&amp;#039; then count = count + 1 end&lt;br /&gt;
	if count &amp;gt; 1 then autoTaxonType = &amp;#039;ERROR&amp;#039; end&lt;br /&gt;
	return autoTaxon, autoTaxonType, infraTaxon, infraTaxonRank, targetTaxon, targetTaxonRank&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;WOSlinker</name></author>
	</entry>
</feed>