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