Die Dokumentation für dieses Modul kann unter Modul:Vorlage:IUCN/Doku erstellt werden

--[[  
Modul für Hilfsfunktionen für Vorlage:IUCN
]]
TAG_ITALIC_START = '<span style="font-style:italic;">' 
TAG_ITALIC_END = '</span>'

local p = { }

function p.formatScientificName(frame)
--[[  
	Wissenschaftlichen Namen für Arten und UNterarten formatieren (Kursivsetzung der pseudolateinischen Namensbestandteile)
	Parameter: 
	*	Unfomrmatierter wissenschaftlicher Name wie auf der IUCN-Seite angegeben
]]
    local sciname_pure = frame.args[1]
	sciname_pure = mw.ustring.gsub(sciname_pure, "''", "") -- Eventuelle Eigenformatierungen sicherheitshalber entfernen    
	local sciname_parts = mw.text.split(sciname_pure, "%s")

    --  Teile, die Unterarten bzw. Varietäten kennzeichnen
    local tab_keywords_subsp = { ["ssp."] = true
	                           , ["subsp."] = true
	                           , ["var."] = true							   
    						   }
	local anz_italic_parts_left = 2 -- Normalfall: Für Arten werden 2 Teile (die nicht mit Punkten enden) kursiv gesetzt
		
	for key, part in ipairs(sciname_parts) do
		local first_char = mw.ustring.sub(part, 1, 1)		
		local last_char = mw.ustring.sub(part, -1, -1)
		if tab_keywords_subsp[part] == true then
			anz_italic_parts_left = anz_italic_parts_left + 1 -- Unterart hat zus. Teil
		end
		if last_char ~= '.' then
			if anz_italic_parts_left > 0 then
				if first_char ~= "'" and last_char ~= "'" then -- siehe Pantanodon sp. nov. 'Manombo'
			   		part = TAG_ITALIC_START .. part .. TAG_ITALIC_END
			   		sciname_parts[key]=part
			   	end
				anz_italic_parts_left = anz_italic_parts_left - 1
			end
		end
	end
	
	local sciname_formatted = table.concat(sciname_parts, " ") -- wieder zusammensetzen
  
    return sciname_formatted 
end
 
return p