<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://the-democratika.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ABiota_infobox%2Fcore</id>
	<title>Module:Biota infobox/core - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://the-democratika.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ABiota_infobox%2Fcore"/>
	<link rel="alternate" type="text/html" href="https://the-democratika.com/wiki/index.php?title=Module:Biota_infobox/core&amp;action=history"/>
	<updated>2026-04-05T01:52:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://the-democratika.com/wiki/index.php?title=Module:Biota_infobox/core&amp;diff=10451&amp;oldid=prev</id>
		<title>&gt;Jts1882: add third status (temp)</title>
		<link rel="alternate" type="text/html" href="https://the-democratika.com/wiki/index.php?title=Module:Biota_infobox/core&amp;diff=10451&amp;oldid=prev"/>
		<updated>2025-02-14T14:12:52Z</updated>

		<summary type="html">&lt;p&gt;add third status (temp)&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;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local templateArgs = {}&lt;br /&gt;
local info = {}&lt;br /&gt;
&lt;br /&gt;
local paramData = require( &amp;#039;Module:Biota infobox/data&amp;#039; ) -- contains the taxon ranks in order&lt;br /&gt;
local autotaxa = require(&amp;quot;Module:Autotaxobox&amp;quot;)&lt;br /&gt;
local parameters = require( &amp;#039;Module:Biota infobox/param&amp;#039; ) &lt;br /&gt;
&lt;br /&gt;
--[[ ##################### CORE FUNCTIONS ###################################&lt;br /&gt;
       this core function emulates Template:Taxobox/core &lt;br /&gt;
       it is followed by functions handling the different type of entry&lt;br /&gt;
]]&lt;br /&gt;
p.main = function(frame)&lt;br /&gt;
	-- this function emulates Template:Taxobox/core when called from taxobox feeder templates&lt;br /&gt;
	--  i.e. Taxobox, Automatic taxobox, Speciesbox, etc&lt;br /&gt;
	parameters.getArgs(frame) &lt;br /&gt;
	templateArgs[&amp;#039;image_upright&amp;#039;] = templateArgs[&amp;#039;upright&amp;#039;] or 1   &lt;br /&gt;
    templateArgs[&amp;#039;image2_upright&amp;#039;] = templateArgs[&amp;#039;upright2&amp;#039;]  or 1&lt;br /&gt;
    info.headerColor = templateArgs[&amp;#039;colour&amp;#039;]&lt;br /&gt;
	return p._core&lt;br /&gt;
    --TODO check it works&lt;br /&gt;
end&lt;br /&gt;
-- this is the core function, called either from main() or auto()&lt;br /&gt;
p.core = function(frame, args, localinfo) &lt;br /&gt;
	templateArgs = args&lt;br /&gt;
	info = localinfo&lt;br /&gt;
	return p._core(frame) &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p._core = function(frame) &lt;br /&gt;
&lt;br /&gt;
	                                    -- TODO use mw.title.getCurrentTitle().basePageTitle&lt;br /&gt;
	info.name = templateArgs[&amp;#039;name&amp;#039;] or tostring( mw.title.getCurrentTitle() ) --.rootPageTitle )&lt;br /&gt;
&lt;br /&gt;
    if not info.headerColor then&lt;br /&gt;
    	info.headerColor = p.getTaxoboxColor(frame) -- so only transverse taxobox heirarchy once&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
	--[[ create table (two versions)&lt;br /&gt;
	     1. use mwhtml library to build table in taxoboxTable&lt;br /&gt;
	     2. use wikitest to build table in wikitextTable&lt;br /&gt;
    ]]&lt;br /&gt;
	local taxoboxTable = mw.html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;infobox&amp;#039;):addClass(&amp;#039;biota&amp;#039;)&lt;br /&gt;
								                :addClass(&amp;#039;biota-infobox&amp;#039;)&lt;br /&gt;
	local wikitextTable = &amp;#039;\n{| class=&amp;quot;infobox biota biota-infobox&amp;quot; &amp;#039;							                &lt;br /&gt;
								                &lt;br /&gt;
    info.subheader = &amp;#039;&amp;#039;&lt;br /&gt;
    if templateArgs[&amp;#039;subheader&amp;#039;] and templateArgs[&amp;#039;subheader&amp;#039;] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		info.subheader=&amp;#039;&amp;lt;div style=&amp;quot;font-weight:normal;font-size:smaller;&amp;quot;&amp;gt;&amp;#039;..templateArgs[&amp;#039;subheader&amp;#039;]..&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    --TODO do we need additional handling to check {{geological range}} templete &lt;br /&gt;
    --        or handle oldest_fossil and youngest_fossil (these don&amp;#039;t seem to be used now)&lt;br /&gt;
    -- Note: taxobox/core uses temporal_range&lt;br /&gt;
    local temporalRange = &amp;#039;&amp;#039;&lt;br /&gt;
    if templateArgs[&amp;#039;temporal_range&amp;#039;]  then&lt;br /&gt;
    	temporalRange = &amp;#039;&amp;lt;div&amp;gt;&amp;lt;small&amp;gt;Temporal range: &amp;#039; .. templateArgs[&amp;#039;temporal_range&amp;#039;] .. &amp;#039;&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; -- use &amp;lt;div&amp;gt; rather than &amp;lt;br/&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local rowHeader = taxoboxTable:tag(&amp;#039;tr&amp;#039;):tag(&amp;#039;th&amp;#039;):attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;):addClass(&amp;#039;section-header&amp;#039;)&lt;br /&gt;
	                :cssText(&amp;#039;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;#039;)&lt;br /&gt;
					:wikitext(info.name .. info.subheader .. temporalRange)&lt;br /&gt;
    &lt;br /&gt;
    wikitextTable = wikitextTable .. &amp;#039;\n|-\n! colspan=&amp;quot;2&amp;quot; class=&amp;quot;section-header&amp;quot; style=&amp;quot;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;quot; &amp;#039;&lt;br /&gt;
                      .. &amp;#039;|&amp;#039; .. info.name .. info.subheader .. temporalRange&lt;br /&gt;
    &lt;br /&gt;
    -- add images&lt;br /&gt;
    wikitextTable = wikitextTable ..  p.addImageSection(frame, taxoboxTable, &amp;#039;image&amp;#039;)&lt;br /&gt;
                                  .. p.addImageSection(frame, taxoboxTable, &amp;#039;image2&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    --add conservation status &lt;br /&gt;
	wikitextTable = wikitextTable .. p.addStatusSection(frame, taxoboxTable, &amp;#039;status&amp;#039;)&lt;br /&gt;
	                              .. p.addStatusSection(frame, taxoboxTable, &amp;#039;status2&amp;#039;)&lt;br /&gt;
	                              .. p.addStatusSection(frame, taxoboxTable, &amp;#039;status3&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- add taxonomy table (uses entered parameters or automatic taxonomy system)&lt;br /&gt;
	wikitextTable = wikitextTable .. p.addTaxonomySection(frame, taxoboxTable)&lt;br /&gt;
    &lt;br /&gt;
	-- add sections with binomial, trinomial, type species/genus (with authorities)&lt;br /&gt;
	wikitextTable = wikitextTable &lt;br /&gt;
				..	p.addTaxonSection(frame, taxoboxTable, &amp;#039;binomial&amp;#039;, &amp;#039;Binomial name&amp;#039;)&lt;br /&gt;
				..	p.addTaxonSection(frame, taxoboxTable, &amp;#039;trinomial&amp;#039;, &amp;#039;Trionomial name&amp;#039;)&lt;br /&gt;
				..	p.addTaxonSection(frame, taxoboxTable, &amp;#039;type_genus&amp;#039;, &amp;#039;Type genus&amp;#039;)&lt;br /&gt;
					--TODO type_ichnogenus, type_oogenus&lt;br /&gt;
				..	p.addTaxonSection(frame, taxoboxTable, &amp;#039;type_species&amp;#039;, &amp;#039;Type species&amp;#039;)&lt;br /&gt;
					--TODO type_ichnospecies, type_oospecies&lt;br /&gt;
				..  p.addTaxonSection(frame, taxoboxTable, &amp;#039;type_strain&amp;#039;, &amp;#039;Type strain&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- add sections showing subdivisions (i.e. child taxa)&lt;br /&gt;
	wikitextTable = wikitextTable &lt;br /&gt;
                 .. p.addListSection(frame, taxoboxTable, &amp;#039;subdivision&amp;#039;, templateArgs[&amp;#039;subdivision_ranks&amp;#039;] or &amp;#039;Subdivisions&amp;#039;)&lt;br /&gt;
                 ..	p.addListSection(frame, taxoboxTable, &amp;#039;possible_subdivision&amp;#039;, templateArgs[&amp;#039;possible_subdivision_ranks&amp;#039;] or &amp;#039;Possible subdivisions&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    -- diversity section (TODO consider how best to handle)&lt;br /&gt;
    wikitextTable = wikitextTable .. p.addTaxonSection(frame, taxoboxTable, &amp;#039;diversity&amp;#039;, &amp;#039;Diversity&amp;#039;) &lt;br /&gt;
&lt;br /&gt;
	-- show included groups (accepts &amp;#039;included&amp;#039; or &amp;#039;includes&amp;#039;) [used for paraphyletic taxa]&lt;br /&gt;
	wikitextTable = wikitextTable .. p.addListSection(frame, taxoboxTable, &amp;#039;includes&amp;#039;, &amp;#039;Groups included&amp;#039;)&lt;br /&gt;
	--p.addListSection(frame, taxoboxTable, &amp;#039;included&amp;#039;, &amp;#039;Groups included&amp;#039;) -- use alias&lt;br /&gt;
&lt;br /&gt;
    --add range map (should this be below binomial/trinomial?)&lt;br /&gt;
    wikitextTable = wikitextTable .. p.addImageSection(frame, taxoboxTable, &amp;#039;range_map&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- show excluded groups (accepts &amp;#039;excluded&amp;#039; or &amp;#039;excludes&amp;#039;) [used for paraphyletic taxa]&lt;br /&gt;
	local excludedHeaderText = &amp;#039;[[Cladistics|Cladistically]] included but traditionally excluded taxa&amp;#039;&lt;br /&gt;
	wikitextTable = wikitextTable .. p.addListSection(frame, taxoboxTable, &amp;#039;excludes&amp;#039;, excludedHeaderText)&lt;br /&gt;
&lt;br /&gt;
    -- add addition binomials, trinomial and range maps&lt;br /&gt;
	wikitextTable = wikitextTable &lt;br /&gt;
	         .. p.addTaxonSection(frame, taxoboxTable, &amp;#039;binomial2&amp;#039;, &amp;#039;Binomial name (2)&amp;#039;)&lt;br /&gt;
	         --p.addTaxonSection(frame, taxoboxTable, &amp;#039;trinomial2&amp;#039;, &amp;#039;Trionomial name (2)&amp;#039;)&lt;br /&gt;
             .. p.addImageSection(frame, taxoboxTable, &amp;#039;range_map2&amp;#039;)&lt;br /&gt;
             .. p.addTaxonSection(frame, taxoboxTable, &amp;#039;binomial3&amp;#039;, &amp;#039;Binomial name (3)&amp;#039;)&lt;br /&gt;
             --p.addTaxonSection(frame, taxoboxTable, &amp;#039;trinomial3&amp;#039;, &amp;#039;Trionomial name (3)&amp;#039;)&lt;br /&gt;
             .. p.addImageSection(frame, taxoboxTable, &amp;#039;range_map3&amp;#039;)&lt;br /&gt;
             .. p.addTaxonSection(frame, taxoboxTable, &amp;#039;binomial4&amp;#039;, &amp;#039;Binomial name (4)&amp;#039;)&lt;br /&gt;
             --p.addTaxonSection(frame, taxoboxTable, &amp;#039;trinomial4&amp;#039;, &amp;#039;Trionomial name (4)&amp;#039;)&lt;br /&gt;
             .. p.addImageSection(frame, taxoboxTable, &amp;#039;range_map4&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- add synonyms section&lt;br /&gt;
	wikitextTable = wikitextTable .. p.addListSection(frame, taxoboxTable, &amp;#039;synonyms&amp;#039;, &amp;#039;[[Synonym (taxonomy)|Synonyms]]&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- add debug/tracking  info section&lt;br /&gt;
	if info.debug then&lt;br /&gt;
	    wikitextTable = wikitextTable ..p.addListSection(frame, taxoboxTable, &amp;#039;debug&amp;#039;, &amp;#039;Debug/tracking info&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	------------------add templateSyles and return taxobox table---------------------------&lt;br /&gt;
	&lt;br /&gt;
	local src = &amp;quot;Template:Biota infobox/styles.css&amp;quot; -- TemplateStyles file&lt;br /&gt;
    	&lt;br /&gt;
   	wikitextTable = 	wikitextTable .. &amp;#039;\n|}&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    local output =	wikitextTable            -- output the wikitext table&lt;br /&gt;
    --local output = tostring(taxoboxTable)    -- output the mw.html table&lt;br /&gt;
	&lt;br /&gt;
	return output .. p.templateStyle( frame, src ) .. info.parameterCategory &lt;br /&gt;
	--return &amp;#039;&amp;lt;div style=&amp;quot;float:right;&amp;quot;&amp;gt;&amp;#039; .. output .. p.templateStyle( frame, src ) .. info.parameterCategory .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
end  -- End the main function.	&lt;br /&gt;
&lt;br /&gt;
--[[ ====================================================================================&lt;br /&gt;
     function to add conservation sections &lt;br /&gt;
        uses template {{taxobox/species|{{{status_system|}}}|{{{status|}}}|{{{status_ref|}}}|extinct={{{extinct|}}} }} }}&lt;br /&gt;
 --]]&lt;br /&gt;
function p.addStatusSection(frame, taxoboxTable, status)&lt;br /&gt;
&lt;br /&gt;
    -- must use table container to handle template output&lt;br /&gt;
    -- don&amp;#039;t use header or content cells; the &amp;#039;taxobox/species&amp;#039; template handles it&lt;br /&gt;
    -- just need to add background colour on the row&lt;br /&gt;
    local wikiText = &amp;quot;&amp;quot;&lt;br /&gt;
    if templateArgs[status] and templateArgs[status] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
 &lt;br /&gt;
		local statusText = frame:expandTemplate{ title = &amp;#039;taxobox/species&amp;#039;, &lt;br /&gt;
									          args = {templateArgs[status..&amp;#039;_system&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
									    		      templateArgs[status] or &amp;#039;&amp;#039;,&lt;br /&gt;
									    		      templateArgs[status..&amp;#039;_ref&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
									    		      [&amp;#039;extinction_date&amp;#039;] = templateArgs[&amp;#039;extinct&amp;#039;] or &amp;#039;&amp;#039;  &lt;br /&gt;
									    		      }&lt;br /&gt;
    	          	                        }&lt;br /&gt;
		local row = taxoboxTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		                                  --:cssText(&amp;#039;background:&amp;#039; ..  p.getTaxoboxColor(frame) .. &amp;#039;;&amp;#039;)&lt;br /&gt;
		local cell = row:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
		           :wikitext(&amp;#039;\n{|\n|- style=&amp;quot;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;quot;&amp;#039;)&lt;br /&gt;
		           :wikitext(&amp;#039;\n&amp;#039;..tostring(statusText))&lt;br /&gt;
    	           :wikitext(&amp;#039;\n|}&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
       -- mw.addWarning (&amp;#039;taxobox/species returns:&amp;#039; .. &amp;#039;&amp;lt;pre&amp;gt;&amp;#039; .. statusText .. &amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;)&lt;br /&gt;
        if status == &amp;quot;status2&amp;quot; or status == &amp;quot;status3&amp;quot; then&lt;br /&gt;
        	wikiText = &amp;#039;\n|-&amp;#039; ..tostring(statusText) -- Horrible fudge to prevent header on second conservation status &lt;br /&gt;
        	                                         --  mimicks taxobox in not having newline after \- so header doesn&amp;#039;t show&lt;br /&gt;
        else&lt;br /&gt;
        	wikiText = &amp;#039;\n|-  colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;quot; &amp;#039; &lt;br /&gt;
                      .. &amp;#039;\n&amp;#039; ..tostring(statusText)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return wikiText &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ ==============================================================================&lt;br /&gt;
     function to add sections for taxonomic information with authorities (&amp;#039;_authority&amp;#039; suffix)&lt;br /&gt;
        e.g. binomial, trinomial, type_species, type_genus; &lt;br /&gt;
        diversity also handled here&lt;br /&gt;
--]]&lt;br /&gt;
function p.addTaxonSection(frame, taxoboxTable, target, headerText)&lt;br /&gt;
	&lt;br /&gt;
	local wikiText = &amp;quot;&amp;quot;&lt;br /&gt;
    -- return if we don&amp;#039;t have value&lt;br /&gt;
	if not templateArgs[target]  or templateArgs[target] == &amp;#039;&amp;#039; then return &amp;quot;&amp;quot; end&lt;br /&gt;
	&lt;br /&gt;
	local bold = &amp;quot;&amp;quot; -- variable for bolding binomial and trinomial (type genus/species etc are not bolded)&lt;br /&gt;
	local showHeader = true&lt;br /&gt;
	&lt;br /&gt;
	local listHeader = (templateArgs[target..&amp;#039;_text&amp;#039;] or headerText) &lt;br /&gt;
&lt;br /&gt;
	-- custom processing section&lt;br /&gt;
	--if target == &amp;#039;binomial&amp;#039; or target == &amp;#039;binomial2&amp;#039; or target == &amp;#039;binomial3&amp;#039; or target == &amp;#039;binomial4&amp;#039; then&lt;br /&gt;
	if target == &amp;#039;binomial&amp;#039; then&lt;br /&gt;
		headerText = &amp;#039;[[Binomial nomenclature|&amp;#039; .. listHeader .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		bold =&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	--elseif target == &amp;#039;trinomial&amp;#039; or target == &amp;#039;trinomial2&amp;#039; or target == &amp;#039;trinomial3&amp;#039; or target == &amp;#039;trinomial4&amp;#039; then&lt;br /&gt;
	elseif target == &amp;#039;trinomial&amp;#039;  then&lt;br /&gt;
		local trinomenLink = &amp;quot;Trinomen&amp;quot; -- for zoological or default&lt;br /&gt;
		if info.auto ==  &amp;quot;infraspeciesbox&amp;quot; then trinomenLink = &amp;quot;Infraspecific name (botany)&amp;quot; end -- regnum contains plant/fung/Archaeplastida&amp;quot;&lt;br /&gt;
		headerText = &amp;#039;[[&amp;#039;.. trinomenLink .. &amp;#039;|&amp;#039; .. headerText .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		bold =&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	elseif target == &amp;#039;binomial2&amp;#039; or target == &amp;#039;binomial3&amp;#039; or target == &amp;#039;binomial4&amp;#039;&lt;br /&gt;
		   or target == &amp;#039;trinomial2&amp;#039; or target == &amp;#039;trinomial3&amp;#039; or target == &amp;#039;trinomial4&amp;#039; then&lt;br /&gt;
		showHeader = false&lt;br /&gt;
		bold =&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	elseif target == &amp;#039;diversity&amp;#039;  then&lt;br /&gt;
	   headerText = &amp;#039;[[Biodiversity|&amp;#039; .. headerText .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
	   --TODO is any handling needed for other option&lt;br /&gt;
	   headerText = &amp;#039;[[&amp;#039; .. headerText .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
    &lt;br /&gt;
	if templateArgs[target..&amp;#039;_ref&amp;#039;] then&lt;br /&gt;
			headerText = headerText .. templateArgs[target..&amp;#039;_ref&amp;#039;] .. &amp;#039;\n&amp;#039;&lt;br /&gt;
	 end&lt;br /&gt;
	&lt;br /&gt;
	local contentString = &amp;#039;&amp;#039;   -- content for the content cell&lt;br /&gt;
	if target == &amp;#039;diversity&amp;#039; and templateArgs[&amp;#039;diversity&amp;#039;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if templateArgs[target..&amp;#039;_link&amp;#039;] and templateArgs[target..&amp;#039;_link&amp;#039;] ~= &amp;quot;&amp;quot; then &lt;br /&gt;
		    contentString =  &amp;#039;\n[[&amp;#039; .. templateArgs[target..&amp;#039;_link&amp;#039;] .. &amp;#039;|&amp;#039; .. templateArgs[target] .. &amp;#039;]]\n&amp;#039; &lt;br /&gt;
		else&lt;br /&gt;
			contentString =  &amp;#039;\n&amp;#039; .. templateArgs[target] .. &amp;#039;\n&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	 else&lt;br /&gt;
	 	-- taxon name and authority (binomial, type species, etc)&lt;br /&gt;
		local authorityString = &amp;#039;&amp;#039;&lt;br /&gt;
		if templateArgs[target..&amp;#039;_authority&amp;#039;] then&lt;br /&gt;
			authorityString = &amp;#039;&amp;lt;br/&amp;gt;&amp;lt;small&amp;gt;&amp;#039; .. templateArgs[target..&amp;#039;_authority&amp;#039;] .. &amp;#039;&amp;lt;/small&amp;gt;&amp;#039; -- \n&amp;#039; &lt;br /&gt;
		end &lt;br /&gt;
		contentString =  bold .. templateArgs[target] .. bold .. authorityString .. &amp;#039;\n&amp;#039; &lt;br /&gt;
		--contentString =  &amp;#039;\n&amp;#039; ..  bold .. templateArgs[target] .. bold .. authorityString .. &amp;#039;\n&amp;#039;  -- extra &amp;lt;p&amp;gt; inserted&lt;br /&gt;
    end 	 &lt;br /&gt;
	&lt;br /&gt;
	-- add table rows&lt;br /&gt;
	if templateArgs[target] and templateArgs[target] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if showHeader then&lt;br /&gt;
			local rowHeader = taxoboxTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			rowHeader  :tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			           :attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
			           :addClass(&amp;#039;section-header&amp;#039;)&lt;br /&gt;
			           :cssText(&amp;#039;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;#039;)&lt;br /&gt;
			           :wikitext( headerText )                   &lt;br /&gt;
        	wikiText = wikiText .. &amp;#039;\n|- \n! colspan=&amp;quot;2&amp;quot; class=&amp;quot;section-header&amp;quot; style=&amp;quot;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;quot; &amp;#039;&lt;br /&gt;
            		   .. &amp;#039;|&amp;#039; .. headerText&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
		&lt;br /&gt;
		local rowList = taxoboxTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		rowList    :tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
		           :attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
		           --:addClass(&amp;#039;section-content&amp;#039;)&lt;br /&gt;
		           :addClass(&amp;#039;taxon-section&amp;#039;)&lt;br /&gt;
		           --:cssText(&amp;#039;text-align:center;&amp;#039;) --font-weight:bold;&amp;#039;)&lt;br /&gt;
		           :wikitext( contentString )&lt;br /&gt;
         wikiText = wikiText .. &amp;#039;\n|- \n| colspan=&amp;quot;2&amp;quot; class=&amp;quot;taxon-section&amp;quot; |&amp;#039; .. contentString&lt;br /&gt;
                             &lt;br /&gt;
	end	&lt;br /&gt;
    return wikiText&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ ====================================================================================&lt;br /&gt;
     function to produce sections for included taxa (subdivisions), synonyms, etc&lt;br /&gt;
      - each consists of two rows containing a header and the content&lt;br /&gt;
      - for paraphyletic groups it has include(d|s) and exclude(d|s) groups &lt;br /&gt;
      - for general taxobox it has subdivision and possible subdivision (disabled here)&lt;br /&gt;
      - any can be modified for other purposes (e.g. sisters) by changing the header taxt with a -text parameter&lt;br /&gt;
  ]]&lt;br /&gt;
function p.addListSection(frame, taxoboxTable, target, headerText)&lt;br /&gt;
   &lt;br /&gt;
    if not templateArgs[target] or templateArgs[target] == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end -- redundant for now&lt;br /&gt;
    &lt;br /&gt;
    local wikiText = &amp;quot;&amp;quot;&lt;br /&gt;
    local refString = &amp;#039;&amp;#039;&lt;br /&gt;
	if templateArgs[target..&amp;#039;_ref&amp;#039;] then&lt;br /&gt;
		   --add &amp;#039;_ref&amp;#039; option for &amp;#039;synonym_ref&amp;#039; (the rest get it as a bonus) TODO check example&lt;br /&gt;
			refString = templateArgs[target..&amp;#039;_ref&amp;#039;] --.. &amp;#039;\n&amp;#039; 	&lt;br /&gt;
	 end&lt;br /&gt;
	local listHeader = (templateArgs[target..&amp;#039;_text&amp;#039;] or headerText) .. refString&lt;br /&gt;
	-- add table rows&lt;br /&gt;
	if templateArgs[target] and templateArgs[target] ~= &amp;#039;&amp;#039;then&lt;br /&gt;
		local rowHeader = taxoboxTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		rowHeader  :tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
		           :attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
		           :addClass(&amp;#039;section-header&amp;#039;)&lt;br /&gt;
		           :cssText(&amp;#039;background:&amp;#039; .. info.headerColor .. &amp;#039;;&amp;#039;)&lt;br /&gt;
		           :wikitext(listHeader)&lt;br /&gt;
        wikiText = wikiText .. &amp;#039;\n|- \n! colspan=&amp;quot;2&amp;quot; class=&amp;quot;section-header&amp;quot; style=&amp;quot;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;quot; &amp;#039;&lt;br /&gt;
               .. &amp;#039;|&amp;#039; .. listHeader&lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
		local rowList = taxoboxTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		rowList    :tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
		           :attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
		           :addClass(&amp;#039;section-content&amp;#039;)&lt;br /&gt;
		           :wikitext(&amp;#039;\n&amp;#039; .. templateArgs[target] .. &amp;#039;\n&amp;#039; )	&lt;br /&gt;
        wikiText = wikiText .. &amp;#039;\n|- \n| colspan=&amp;quot;2&amp;quot; class=&amp;quot;section-content&amp;quot; &amp;#039;&lt;br /&gt;
               .. &amp;#039;|&amp;#039; .. &amp;#039;\n&amp;#039; .. templateArgs[target] .. &amp;#039;\n&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	 end	&lt;br /&gt;
	 return wikiText&lt;br /&gt;
end&lt;br /&gt;
-----------------------------------------------------------------------------------------------&lt;br /&gt;
--[[ ============================================================================&lt;br /&gt;
     function to add image sections&lt;br /&gt;
     - used for illustrative images at top and for range maps&lt;br /&gt;
--]]&lt;br /&gt;
function p.addImageSection(frame, taxoboxTable, target)&lt;br /&gt;
	 &lt;br /&gt;
	 local wikiText = &amp;quot;&amp;quot;&lt;br /&gt;
	 if templateArgs[target] and templateArgs[target] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
	 	&lt;br /&gt;
        local imageWidth = &amp;#039;&amp;#039;&lt;br /&gt;
        local imageCaptionString = &amp;#039;&amp;#039;&lt;br /&gt;
        if templateArgs[target..&amp;#039;_caption&amp;#039;] then &lt;br /&gt;
        	--imageCaptionString = &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot;&amp;gt;&amp;#039; .. templateArgs[target .. &amp;#039;_caption&amp;#039;] .. &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;/small&amp;gt;&amp;#039; &lt;br /&gt;
        	--imageCaptionString = &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;div&amp;gt;&amp;#039; .. templateArgs[target .. &amp;#039;_caption&amp;#039;] .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; &lt;br /&gt;
        	imageCaptionString = templateArgs[target .. &amp;#039;_caption&amp;#039;]&lt;br /&gt;
        end&lt;br /&gt;
        local imageAltString = &amp;#039;&amp;#039;&lt;br /&gt;
        if templateArgs[target..&amp;#039;_alt&amp;#039;] then&lt;br /&gt;
        	imageAltString = templateArgs[target..&amp;#039;_alt&amp;#039;]&lt;br /&gt;
        elseif templateArgs[target..&amp;#039;_caption&amp;#039;] then&lt;br /&gt;
        	imageAltString = templateArgs[target..&amp;#039;_caption&amp;#039;] -- use caption for alt text if none provided&lt;br /&gt;
        end &lt;br /&gt;
        local upright = templateArgs[&amp;#039;image_upright&amp;#039;] or 1&lt;br /&gt;
        &lt;br /&gt;
        local InfoboxImage = require( &amp;#039;Module:InfoboxImage&amp;#039; ) --, parent.args[target]  )&lt;br /&gt;
        local params = { args = { 	image = templateArgs[target],&lt;br /&gt;
							        size = templateArgs[target..&amp;#039;_width&amp;#039;],&lt;br /&gt;
							        sizedefault = &amp;#039;frameless&amp;#039;,&lt;br /&gt;
							        alt = imageAltString,&lt;br /&gt;
							        upright = templateArgs[target..&amp;#039;_upright&amp;#039;] or upright &lt;br /&gt;
							        }&lt;br /&gt;
					    }&lt;br /&gt;
					    &lt;br /&gt;
        local image = InfoboxImage.InfoboxImage(  params )&lt;br /&gt;
        &lt;br /&gt;
	    --local rowImage = taxoboxTable:tag(&amp;#039;tr&amp;#039;) &lt;br /&gt;
	    local rowImage = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		rowImage:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
					 :attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
		             :addClass(&amp;quot;image-section&amp;quot;)&lt;br /&gt;
		             :wikitext(image)&lt;br /&gt;
		             --:wikitext(imageCaptionString)&lt;br /&gt;
		taxoboxTable:node(rowImage)&lt;br /&gt;
        wikiText= wikiText .. &amp;#039;\n|- \n|colspan=&amp;quot;2&amp;quot; class=&amp;quot;image-section&amp;quot; |&amp;#039; .. image &lt;br /&gt;
	    &lt;br /&gt;
	    if imageCaptionString ~= &amp;quot;&amp;quot; then                  -- only insert row if caption string&lt;br /&gt;
		    local rowImageCaption = mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			rowImageCaption:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
						 :attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
			             :addClass(&amp;quot;image-section&amp;quot;)&lt;br /&gt;
			             --:wikitext(image)&lt;br /&gt;
			             :wikitext(imageCaptionString)&lt;br /&gt;
	        taxoboxTable:node(rowImageCaption)&lt;br /&gt;
	        wikiText = wikiText ..  &amp;#039;\n|- \n|colspan=&amp;quot;2&amp;quot; class=&amp;quot;image-section&amp;quot; |&amp;#039; .. imageCaptionString&lt;br /&gt;
        end &lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- TODO handle upright&lt;br /&gt;
	return wikiText&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
--[[ ============================ TAXONOMY SECTION =======================================&lt;br /&gt;
     adds a table showing the taxonomy&lt;br /&gt;
      - uses either manual parameters or the automatic taxonomy system&lt;br /&gt;
      - currently adds a table inside a cell (like paraphyletic group) rather than just adding rows (core taxobox system)&lt;br /&gt;
--]]    &lt;br /&gt;
 &lt;br /&gt;
function p.addTaxonomySection(frame, taxoboxTable)&lt;br /&gt;
    &lt;br /&gt;
    local wikiText = &amp;quot;&amp;quot;&lt;br /&gt;
	local taxonomyHeader = &amp;quot;[[Taxonomy_(biology)|Scientific classification]]&amp;quot;&lt;br /&gt;
	if templateArgs[&amp;#039;virus_group&amp;#039;]  then &lt;br /&gt;
		taxonomyHeader = &amp;quot;[[Virus classification]]&amp;quot;&lt;br /&gt;
	elseif templateArgs[&amp;#039;ichnos&amp;#039;]  then &lt;br /&gt;
		taxonomyHeader = &amp;quot;[[Trace fossil classification]]&amp;quot;&lt;br /&gt;
	elseif templateArgs[&amp;#039;veterovata&amp;#039;]  then &lt;br /&gt;
		taxonomyHeader = &amp;quot;[[Veterovata|Eggshell classification]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		-- TODO add other options (DONE but not verified ichnos or veterovata)&lt;br /&gt;
		-- ! colspan=2 style=&amp;quot;min-width:15em; text-align: center{{#if:{{{colour|}}}|{{;}} background-color{{COLON}} {{{colour}}} }}&amp;quot; | &lt;br /&gt;
		--   {{#if:{{{virus_group|{{{virus|}}}}}}|[[Virus classification]]&lt;br /&gt;
		--    	|{{#if:{{{ichnos|}}}|[[Trace fossil classification]]&lt;br /&gt;
	    --   	|{{#if:{{{veterovata|}}}|[[Veterovata|Eggshell classification]]&lt;br /&gt;
	    --   |[[Taxonomy (biology)|Scientific classification]]}} }} }} &lt;br /&gt;
     	--	    {{#if:{{{edit link|}}}|{{edit taxonomy|{{{parent|}}} | {{{edit link}}} }}&lt;br /&gt;
		--   {{#if: {{{classification_status|}}} | &amp;lt;br&amp;gt;({{{classification_status}}}) | }} }}&lt;br /&gt;
		-- handle |classification_status=disputed (add ref)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- add symbol and link to taxonomy editor&lt;br /&gt;
	local editLink = &amp;#039;&amp;#039;&lt;br /&gt;
	if info.auto then&lt;br /&gt;
		local tooltip = templateArgs[&amp;#039;edit link&amp;#039;] or &amp;quot;Edit this classification&amp;quot;&lt;br /&gt;
		local style = &amp;#039;font-size:smaller; float:right; padding-right:0.4em; margin-left:-3em;&amp;#039;&lt;br /&gt;
		local link = &amp;#039;Template:Taxonomy/&amp;#039; .. templateArgs[&amp;#039;parent&amp;#039;]&lt;br /&gt;
		if info.db == &amp;quot;wikidata&amp;quot; then&lt;br /&gt;
			local message = &amp;#039;Select%20preview%20to%20see%20Wikidata%20hierarchy&amp;#039;&lt;br /&gt;
			local url=&amp;#039;https://en.wikipedia.org/w/index.php?action=edit&amp;amp;section=new&amp;amp;preloadtitle=&amp;#039; .. message &lt;br /&gt;
			      .. &amp;#039;&amp;amp;title=Template:Biota_infobox/Wikidata/preview&amp;amp;preload=User:Jts1882/Taxonomy/preload2&amp;amp;preloadparams%5b%5d=&amp;#039;&lt;br /&gt;
			link =  url .. string.gsub( templateArgs[&amp;#039;parent&amp;#039;], &amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		editLink  = &amp;#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;&amp;#039;.. style ..&amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
			.. &amp;#039;[[File:OOjs UI icon edit-ltr.svg|15px|link=&amp;#039; .. link .. &amp;#039;|&amp;#039; .. tooltip  .. &amp;#039;]]&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
			--.. &amp;#039;[[File:Red Pencil Icon.png|link=&amp;#039; .. link .. &amp;#039;|&amp;#039; .. tooltip  .. &amp;#039;]]&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
			&lt;br /&gt;
	end&lt;br /&gt;
	local status = &amp;quot;&amp;quot;&lt;br /&gt;
	if templateArgs[&amp;#039;classification_status&amp;#039;] then &lt;br /&gt;
		status = &amp;#039;&amp;lt;div style=&amp;quot;font-weight:normal;&amp;quot; &amp;gt;(&amp;#039; .. templateArgs[&amp;#039;classification_status&amp;#039;] .. &amp;#039;)&amp;#039;&lt;br /&gt;
	    if templateArgs[&amp;#039;classification_ref&amp;#039;] then status = status .. templateArgs[&amp;#039;classification_ref&amp;#039;] end&lt;br /&gt;
		status = status .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local rowTaxonomyHeader = taxoboxTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	rowTaxonomyHeader:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
	           :attr(&amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
	           :addClass(&amp;#039;section-header&amp;#039;)&lt;br /&gt;
	           :cssText(&amp;#039;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;#039;)&lt;br /&gt;
	           :wikitext(taxonomyHeader)&lt;br /&gt;
	           :wikitext(editLink)&lt;br /&gt;
	           :wikitext(status)&lt;br /&gt;
    &lt;br /&gt;
    wikiText = wikiText .. &amp;#039;\n|- \n! colspan=&amp;quot;2&amp;quot; class=&amp;quot;section-header&amp;quot; style=&amp;quot;min-width:15em;text-align:center;background:&amp;#039; ..  info.headerColor .. &amp;#039;;&amp;quot; &amp;#039;&lt;br /&gt;
               .. &amp;#039;|&amp;#039; .. taxonomyHeader .. editLink .. status&lt;br /&gt;
    &lt;br /&gt;
    --[[ get taxonomy list, either using automatic taxobox system or manual system     &lt;br /&gt;
         manual: get ranks and taxa from template parameter&lt;br /&gt;
         auto (default): get ranks and taxa from taxonomy template parameters&lt;br /&gt;
         module: get ranks and taxa from dataa submodules&lt;br /&gt;
         wikidata: get ranks and taxa from wikidata&lt;br /&gt;
    ]]&lt;br /&gt;
    -- shows ranks of genus or above for all auto modes&lt;br /&gt;
	if info.db == &amp;quot;module&amp;quot; then &lt;br /&gt;
	    local wdModule = require( &amp;#039;Module:Biota infobox/Wikidata&amp;#039; ) &lt;br /&gt;
	    wikiText = wikiText .. wdModule.addModuleTaxonomy(frame, taxoboxTable,  templateArgs)   -- use module copy of template data&lt;br /&gt;
	elseif info.db == &amp;quot;wikidata&amp;quot; then &lt;br /&gt;
	    --wikiText = wikiText ..&amp;#039;\n|-|\n|&amp;#039; .. p.addWikidataTaxonomy(frame, taxoboxTable)   -- use wikidata&lt;br /&gt;
        local wdModule = require( &amp;#039;Module:Biota infobox/Wikidata&amp;#039; ) &lt;br /&gt;
&lt;br /&gt;
        wikiText = wikiText .. wdModule.addWikidataTaxonomy(frame, taxoboxTable,  templateArgs)   -- use wikidata&lt;br /&gt;
		&lt;br /&gt;
		-- TODO need to handle colour &lt;br /&gt;
        -- the default is class=&amp;quot;section-header&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;background:rgb(250,240,230);&amp;quot;&lt;br /&gt;
        -- wikiText = wikiText:gsub(&amp;#039;style=&amp;quot;background:rgb%(250,240,230%);&amp;quot;&amp;#039;, &amp;#039;style=&amp;quot;background:red;&amp;quot;&amp;#039;)&lt;br /&gt;
        -- gsub must be applied to wikitextTable&lt;br /&gt;
        -- use more generally to avoid traversing the hierarchy twice)&lt;br /&gt;
	elseif info.auto then &lt;br /&gt;
		--[[ get automatic taxonomy hierarchy (three different variants)&lt;br /&gt;
		      1) direct call to taxoboxList() - preferred if issues with setting frame arguments can be resolved (used in live version)&lt;br /&gt;
		      2) experimental version of taxoboxList()&lt;br /&gt;
		      3) [ET] using Template:Taxobox/taxonomy&lt;br /&gt;
		]]&lt;br /&gt;
	    wikiText = wikiText ..&amp;#039;\n|-|\n|&amp;#039; .. p.addAutomaticTaxonomy(frame, taxoboxTable)   -- use #invoke of module&lt;br /&gt;
	end&lt;br /&gt;
	if info.auto then&lt;br /&gt;
		-- use manual taxobox for subgeneric ranks:  subgenus,species, subspecies, variety (also for informal group)&lt;br /&gt;
    -- ranks below genys using manual taxobox code &lt;br /&gt;
	    local taxonRanks = { &amp;#039;subgenus&amp;#039;, &amp;#039;species&amp;#039;, &amp;#039;hybrid&amp;#039;,  &amp;#039;subspecies&amp;#039;, &amp;#039;population&amp;#039;, &amp;#039;variety&amp;#039; , &amp;#039;infraspecies_rank1&amp;#039; , &amp;#039;infraspecies_rank2&amp;#039;, &amp;#039;informal&amp;#039;} &lt;br /&gt;
		&lt;br /&gt;
		wikiText = wikiText .. p.addManualTaxonomy(frame, taxoboxTable, taxonRanks)&lt;br /&gt;
	else&lt;br /&gt;
		wikiText = wikiText .. p.addManualTaxonomy(frame, taxoboxTable, paramData.taxonRanks) -- just add rows manually&lt;br /&gt;
    end&lt;br /&gt;
    return wikiText&lt;br /&gt;
end&lt;br /&gt;
-------------------------------------------------AUTOMATIC TAXONOMY (using invoke of module function) -----------&lt;br /&gt;
function p.addAutomaticTaxonomy(frame, taxoboxTable) -- use invoke of module function&lt;br /&gt;
	--emulate template: {{taxobox/taxonomy}}&lt;br /&gt;
	--which uses {{#invoke:Autotaxobox|taxoboxList&lt;br /&gt;
	--local autotaxa = require(&amp;quot;Module:Autotaxobox&amp;quot;) -- also needed for colours so global now&lt;br /&gt;
&lt;br /&gt;
    local bold_first = &amp;#039;bold&amp;#039;&lt;br /&gt;
    if templateArgs[&amp;#039;species&amp;#039;] or templateArgs[&amp;#039;hybrid&amp;#039;] then 	bold_first = &amp;#039;link&amp;#039;    end&lt;br /&gt;
    if templateArgs[&amp;#039;link_parent&amp;#039;] then 	bold_first = &amp;#039;link&amp;#039;    end&lt;br /&gt;
&lt;br /&gt;
    local args = {	templateArgs[&amp;#039;parent&amp;#039;],  -- or tostring( mw.title.getCurrentTitle() ), &lt;br /&gt;
					display_taxa	    = templateArgs[&amp;#039;display_taxa&amp;#039;] or 1,&lt;br /&gt;
					offset              = templateArgs[&amp;#039;offset&amp;#039;] or 0,&lt;br /&gt;
					authority           = templateArgs[&amp;#039;authority&amp;#039;],&lt;br /&gt;
			        parent_authority    = templateArgs[&amp;#039;parent_authority&amp;#039;],&lt;br /&gt;
			        gparent_authority   = templateArgs[&amp;#039;grandparent_authority&amp;#039;],&lt;br /&gt;
			        ggparent_authority  = templateArgs[&amp;#039;greatgrandparent_authority&amp;#039;],&lt;br /&gt;
			        gggparent_authority = templateArgs[&amp;#039;greatgreatgrandparent_authority&amp;#039;],&lt;br /&gt;
			        virus=templateArgs[&amp;#039;virus&amp;#039;],&lt;br /&gt;
			        bold_first          = bold_first&lt;br /&gt;
	          }&lt;br /&gt;
	          &lt;br /&gt;
    frame.args = args&lt;br /&gt;
   -- templateArgs[&amp;#039;debug&amp;#039;] =  mw.dumpObject(frame) &lt;br /&gt;
&lt;br /&gt;
	local autoTaxonomy = autotaxa.taxoboxList(frame)&lt;br /&gt;
	&lt;br /&gt;
    if (1==1) then return autoTaxonomy end&lt;br /&gt;
    &lt;br /&gt;
    local row = taxoboxTable:tag(&amp;#039;tr&amp;#039;)  --  incompatible with the templates called&lt;br /&gt;
                        :wikitext(&amp;#039;\n|rank ||taxon name &amp;#039;)  &lt;br /&gt;
                        :wikitext(&amp;#039;\n&amp;#039;.. autoTaxonomy )  -- autoTaxonomy ends with a new row (|-)at end&lt;br /&gt;
                        :wikitext(&amp;#039;\n|x ||y &amp;#039;)                 -- so add blank cells to complete extra row&lt;br /&gt;
                                                               --   this and affects spacing in taxonomy rows&lt;br /&gt;
                        --:wikitext(&amp;#039;\n&amp;#039;)                      -- spacing fine, newline for table wikitext&lt;br /&gt;
                        &lt;br /&gt;
                    &lt;br /&gt;
    --[[ note:  the output of {{taxobox/showtaxon}} [used by invoke:Autotaxobox|taxoboxList] ends with a newline token&lt;br /&gt;
                this and affects spacing in taxonomy rows&lt;br /&gt;
                leaving the empty row results in spurious paragraphs above the table&lt;br /&gt;
      ]]&lt;br /&gt;
	return &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------MANUAL TAXONOMY--------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.addManualTaxonomy(frame,taxoboxTable, taxonRanks)&lt;br /&gt;
	&lt;br /&gt;
	--local parent = mw.getCurrentFrame():getParent()&lt;br /&gt;
	--local taxonRanks = data.taxonRanks&lt;br /&gt;
	&lt;br /&gt;
	-- following {{Paraphyletic group, a table is add to the cell in the classification row&lt;br /&gt;
	--local taxonomyTable = mw.html.create(&amp;#039;table&amp;#039;):addClass(&amp;#039;taxonomy&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- an alternative is to dispense with the extra table and just add the rows (like taxobox/core), &lt;br /&gt;
	--    which would need colspan=2 on other rows (DONE)&lt;br /&gt;
	local taxonomyTable = 	taxoboxTable  &lt;br /&gt;
	local wikiText = &amp;quot;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for k,v in pairs(taxonRanks) do&lt;br /&gt;
		&lt;br /&gt;
		if templateArgs[v] then&lt;br /&gt;
		    local taxonName = templateArgs[v]&lt;br /&gt;
		    &lt;br /&gt;
		    local taxonRank = frame:expandTemplate{ title = &amp;quot;anglicise rank&amp;quot;, args = {taxonRanks[k]} }&lt;br /&gt;
		    if v == &amp;#039;infraspecies_rank1&amp;#039; and templateArgs[&amp;#039;infraspecies_rank1_name&amp;#039;] then&lt;br /&gt;
		        taxonRank = templateArgs[&amp;#039;infraspecies_rank1_name&amp;#039;]&lt;br /&gt;
		    elseif  v == &amp;#039;infraspecies_rank2&amp;#039; and templateArgs[&amp;#039;infraspecies_rank2_name&amp;#039;]then&lt;br /&gt;
		        taxonRank = templateArgs[&amp;#039;infraspecies_rank2_name&amp;#039;]&lt;br /&gt;
		    elseif  v == &amp;#039;population&amp;#039; and templateArgs[&amp;#039;population_rank_name&amp;#039;]then&lt;br /&gt;
		        taxonRank = templateArgs[&amp;#039;population_rank_name&amp;#039;]&lt;br /&gt;
		    end&lt;br /&gt;
		    &lt;br /&gt;
		    if taxonRanks[k] == &amp;quot;virus_group&amp;quot; then&lt;br /&gt;
		    	taxonName = frame:expandTemplate{ title = &amp;quot;Virus group&amp;quot;, args = {templateArgs[v]} }&lt;br /&gt;
		    --	taxonRank = &amp;quot;Group&amp;quot; -- handled by anglicise rank template&lt;br /&gt;
		    end&lt;br /&gt;
		    local authorityString = &amp;#039;&amp;#039;&lt;br /&gt;
		    if templateArgs[taxonRanks[k]..&amp;#039;_authority&amp;#039;] then&lt;br /&gt;
		    	authorityString = &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;#039;..templateArgs[taxonRanks[k]..&amp;#039;_authority&amp;#039;]..&amp;#039;&amp;lt;/small&amp;gt;&amp;#039;&lt;br /&gt;
		    end&lt;br /&gt;
		    local taxonString = &amp;#039;&amp;lt;span class=&amp;quot;&amp;#039;.. taxonRanks[k] ..&amp;#039;&amp;quot;&amp;gt;&amp;#039;..taxonName..&amp;#039;&amp;lt;/span&amp;gt;&amp;#039;..authorityString&lt;br /&gt;
&lt;br /&gt;
		    local row = taxonomyTable:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	     	row:tag(&amp;#039;td&amp;#039;):wikitext(taxonRank..&amp;#039;:&amp;#039;)&lt;br /&gt;
		    row:tag(&amp;#039;td&amp;#039;):wikitext(taxonString)&lt;br /&gt;
		    --:wikitext(&amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;&amp;#039;..parent.args[taxonRanks[k]..&amp;#039;_authority&amp;#039;]..&amp;#039;&amp;lt;/small&amp;gt;&amp;#039;)&lt;br /&gt;
            &lt;br /&gt;
            wikiText = wikiText  .. &amp;#039;\n|- \n|&amp;#039; .. taxonRank..&amp;#039;: \n|&amp;#039; .. taxonString&lt;br /&gt;
		end &lt;br /&gt;
	end -- end for loop&lt;br /&gt;
	&lt;br /&gt;
	--return tostring(taxonomyTable)&lt;br /&gt;
	return wikiText&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ ########################### UTILITY FUNCTIONS ###############################################&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------TAXOBOX COLOUR--------------------------------------&lt;br /&gt;
   -- gets colour for headers using manual or automatic taxobox schemes&lt;br /&gt;
]]	&lt;br /&gt;
function p.getTaxoboxColor(frame)&lt;br /&gt;
	&lt;br /&gt;
	local colorAs = templateArgs[&amp;#039;color_as&amp;#039;] or nil&lt;br /&gt;
	&lt;br /&gt;
	if  info.auto and not templateArgs[&amp;#039;virus_group&amp;#039;] then &lt;br /&gt;
	   --[[(1) if color_as|colour_as|color as|colour as set, use template {{Taxobox colour|color_as}}&lt;br /&gt;
	   	   (2) else use the auto taxonnomy tree to find colour: {{#invoke:Autotaxobox|taxoboxColour| }}&lt;br /&gt;
	    {{#invoke:Autotaxobox|taxoboxColour|{{{parent|{{{genus|{{first word|{{{taxon|{{PAGENAME}} }}&lt;br /&gt;
	--]]&lt;br /&gt;
		--[[if (templateArgs[&amp;#039;color_as&amp;#039;] and templateArgs[&amp;#039;color_as&amp;#039;] ~= &amp;quot;&amp;quot;) or&lt;br /&gt;
		   (templateArgs[&amp;#039;colour_as&amp;#039;] and templateArgs[&amp;#039;colour_as&amp;#039;] ~= &amp;quot;&amp;quot;) or&lt;br /&gt;
		   (templateArgs[&amp;#039;color as&amp;#039;] and templateArgs[&amp;#039;color as&amp;#039;] ~= &amp;quot;&amp;quot;) or&lt;br /&gt;
		   (templateArgs[&amp;#039;colour as&amp;#039;] and templateArgs[&amp;#039;colour as&amp;#039;] ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		    &lt;br /&gt;
		   local colorAs = &amp;quot;&amp;quot;&lt;br /&gt;
		   if templateArgs[&amp;#039;color_as&amp;#039;] then colorAs = templateArgs[&amp;#039;color_as&amp;#039;]  end&lt;br /&gt;
		   if templateArgs[&amp;#039;colour_as&amp;#039;]  then colorAs =  templateArgs[&amp;#039;colour_as&amp;#039;] end&lt;br /&gt;
		   if templateArgs[&amp;#039;color as&amp;#039;] then colorAs =  templateArgs[&amp;#039;color as&amp;#039;] end&lt;br /&gt;
		   if templateArgs[&amp;#039;colour as&amp;#039;]  then colorAs =  templateArgs[&amp;#039;colour as&amp;#039;]  end]]&lt;br /&gt;
		if colorAs then -- templateArgs[&amp;#039;color_as&amp;#039;] and templateArgs[&amp;#039;color_as&amp;#039;] ~= &amp;quot;&amp;quot;   then&lt;br /&gt;
			&lt;br /&gt;
		    return frame:expandTemplate{ title = &amp;#039;Taxobox colour&amp;#039;, args = {colorAs} }&lt;br /&gt;
		    &lt;br /&gt;
		else&lt;br /&gt;
			-- us #invoke:Autotaxobox|taxoboxColour|{{{parent}}} [parent should be set]&lt;br /&gt;
			&lt;br /&gt;
			frame.args[1] = templateArgs[&amp;#039;parent&amp;#039;]&lt;br /&gt;
			&lt;br /&gt;
	        return autotaxa.taxoboxColour(frame)&lt;br /&gt;
			--return	&amp;quot;palegreen&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else -- use manual taxobox colours&lt;br /&gt;
		--{{Taxobox colour|{{{regnum|{{{virus_group|{{{unranked_phylum|{{{phylum|&amp;#039;&amp;#039;[[Incertae sedis]]&amp;#039;&amp;#039;}}}}}}}}}}}}}}&lt;br /&gt;
		if not colorAs then  --templateArgs[&amp;#039;color_as&amp;#039;]    then&lt;br /&gt;
     &lt;br /&gt;
			local group =&amp;#039;&amp;#039;&lt;br /&gt;
			if templateArgs[&amp;#039;regnum&amp;#039;] then&lt;br /&gt;
				group = templateArgs[&amp;#039;regnum&amp;#039;]&lt;br /&gt;
			elseif templateArgs[&amp;#039;virus_group&amp;#039;] then&lt;br /&gt;
				group = templateArgs[&amp;#039;virus_group&amp;#039;]&lt;br /&gt;
			elseif templateArgs[&amp;#039;unranked_phylum&amp;#039;] then&lt;br /&gt;
				group = templateArgs[&amp;#039;unranked_phylum&amp;#039;]&lt;br /&gt;
			elseif templateArgs[&amp;#039;phylum&amp;#039;] then&lt;br /&gt;
				group = templateArgs[&amp;#039;phylum&amp;#039;]&lt;br /&gt;
			else&lt;br /&gt;
				group = &amp;quot;&amp;#039;&amp;#039;[[Incertae sedis]]&amp;#039;&amp;#039;&amp;quot;          -- TODO check if this is what was desired&lt;br /&gt;
			end&lt;br /&gt;
            colorAs = group&lt;br /&gt;
        end&lt;br /&gt;
	    return frame:expandTemplate{ title = &amp;#039;Taxobox colour&amp;#039;, args = {colorAs} }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
function p.templateStyle( frame, src )&lt;br /&gt;
   return frame:extensionTag( &amp;#039;templatestyles&amp;#039;, &amp;#039;&amp;#039;, { src = src } );&lt;br /&gt;
   &lt;br /&gt;
end	&lt;br /&gt;
function p.firstToUpper(str)&lt;br /&gt;
    return (str:gsub(&amp;quot;^%l&amp;quot;, string.upper))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
	return info.auto	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>&gt;Jts1882</name></author>
	</entry>
</feed>