Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Autovirusbox
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 ItalicTitle = require('Module: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 = {'[[Category: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 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
Summary:
Please note that all contributions to Stockhub 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
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Para
(
edit
)
Template:Tl
(
edit
)
Module:Autovirusbox/doc
(
edit
)