Modul:Vorlage:GRIN
Die Dokumentation für dieses Modul kann unter Modul:Vorlage:GRIN/Doku erstellt werden
--[[
Modul für Hilfsfunktionen für Vorlage:GRIN
]]
TAG_ITALIC_START = '<span style="font-style:italic;">'
TAG_ITALIC_END = '</span>'
local p = { }
function p.formatScientificName(frame)
--[[
Formatierung der wissenschaftlichen Namen für Taxa, die bei GRIN geführt werden. Dabei werden die pseudolateinischen Bestandteile für Ränge <= Gattung kursiv gesetzt.
Parameter:
* Rang (mögliche Ausprägungen siehe Vorlagendok.)
* Unfomrmatierter wissenschaftlicher Name wie auf der GRIN-Seite angegeben, allerdings ohne Autorenangaben
]]
local rank = mw.ustring.lower(frame.args[1])
local sciname_pure = mw.ustring.gsub(frame.args[2], "''", "") -- Eventuelle Eigenformatierungen sicherheitshalber entfernen
local sciname_parts = mw.text.split(sciname_pure, "%s")
-- Nicht kursivzusetzende Ränge
local tab_ranks_regular = {["family"] = true
, ["subfamily"] = true
, ["tribe"] = true
, ["subtribe"] = true
}
local hybrid_prefix = "×" -- Kennzeichnung von Hybriden. Das Hybridzeichen sollte nicht Kursiv gesetzt werden.
-- Die Abhandlung ist allerdings Placebo, da die Darstellung kursiv gesetzter Malzeichen sich nicht von regulären unterscheidet.
if tab_ranks_regular[rank] then
return sciname_pure -- keine Kursivsetzung
end
for key, part in ipairs(sciname_parts) do
local first_char = mw.ustring.sub(part, 1, 1)
if first_char == hybrid_prefix then
part = mw.ustring.sub(part, 2)
end
if mw.ustring.match(part, "%W") == nil then -- kein Nicht-Alpha-Zeichen im String (i.d.R. abschießender Punkt)
part = TAG_ITALIC_START .. part .. TAG_ITALIC_END
if first_char == hybrid_prefix then
part = first_char .. part -- Hybridzeichen wieder davor
end
sciname_parts[key]=part
end
end
local sciname_formatted = table.concat(sciname_parts, " ") -- wieder zusammensetzen
return sciname_formatted
end
return p