Module:TaxonList: Difference between revisions

Content deleted Content added
extinct now uses abbr tag instead of span
Copy from sandbox per request on talk
 
(3 intermediate revisions by one other user not shown)
Line 8:
-- use a function from Module:TaxonItalics to italicize a taxon name
local TaxonItalics = require("Module:TaxonItalics")
local IfPreview = require([[Module:If preview]])
 
local p = {}
Line 41 ⟶ 42:
end
return taxonName, dagger
end
 
--[[=========================================================================
Utility function to do the following:
 
1. Strip off any initial † present to mark the taxon as extinct. We outsource
to p.stripDagger() for this.
 
2. Strip off any double quotation marks present to mark the taxon as invalid.
The double-quotation marks, too, should not be formatted.
 
3. Strip off any Candidatus or Ca. to mark the taxon as Candidatus.
 
The function returns four values:
* the taxon name with all of the three modifiers removed
* either '†' if it was present or the empty string if not
* either a single dquote if it was present in a pair or the empty string if not
* either italicized "Candidatus " or "Ca. " if it was present or the empty string if not
 
The function can error in case of an unpaired quotation mark. In that case, a
IfPreview._warning() is mixed into the first return.
=============================================================================]]
function p.parseName(taxonName)
taxonName local name, dagger = p.stripDagger(taxonName)
local dquote = ''
if string.sub(name,1,1) == '"' then
name = string.sub(name,2)
daggerdquote = '"'
if string.sub(name,#name) == '"' then
name = string.sub(name,1,#name-1)
else
name = '|' .. IfPreview._warning({'"' .. name .. ' has an unpaired double quote.'})
end
end
 
local candidatus = ''
if string.sub(name,1,11) == 'Candidatus ' then
name = string.sub(name,12)
candidatus = "''Candidatus'' "
elseif string.sub(name,1,4) == 'Ca. ' then
name = string.sub(name,5)
candidatus = "''Ca.'' "
end
 
return name, dagger, dquote, candidatus
end
 
Line 69 ⟶ 115:
local taxonName
local dagger
local dquote
local candidatus
local first = true -- is this the first of a taxon name/author pair?
for param, value in pairs(taxonArgs) do
Line 74 ⟶ 122:
if first then
taxonName = mw.text.trim(value)
-- if necessary separate any initial † from the taxon namemodifier
taxonName, dagger, dquote, candidatus = p.parseName(taxonName)
if linked orand not (italic orand candidatus == bold'') then
taxonName, dagger = p.stripDagger(taxonName)
else
dagger = ''
end
if linked and not italic then
taxonName = '[[' .. taxonName .. ']]'
end
if italic and candidatus == '' then
taxonName = TaxonItalics.italicizeTaxonName(taxonName, linked, abbreviated)
end
taxonName = candidatus .. taxonName
if bold then
taxonName = '<b>' .. taxonName .. '</b>'
end
result = result .. '<li>' .. dagger .. dquote .. taxonName .. dquote
else
result = result .. ' <small>' .. value .. '</small></li>'
Line 99 ⟶ 144:
result = result .. '<small>(incomplete list)</small>'
end
return '<ul styleclass="plainlisttaxonlist">' .. result .. '</ul>'
end