Module:TaxoboxClassification Haut
Appearance
Unchecked
Documentation for this module may be created at Module:TaxoboxClassification Haut/doc
-- contient le haut de la classification (au dessus des classes).
-- en pratique, pour mes besoins, ne contient que la lignée qui va jusqu'aux Sauropsida
local z = {}
-- format : chaque table commence par le nom et le rang du taxon.
-- un noeud terminal ne contient pas de 3eme element.
-- s'il existe le 3eme element est obligatoirement une table
-- repondant au meme format.
-- la classification ci-dessous va de tout en haut jusqu'aux classes
local classif = { "Eukaryota", "domaine",
{ "Unikonta", "sous-domaine",
{ "Opisthokonta", "super-regne",
{ "Metazoa", "regne",
{ "Chordata", "embranchement",
{ "Vertebrata", "sous-embranchement",
{ "Amniota", "clade",
{ "Sauropsida", "classe" }
} } } } } } }
-- definition a plat de la classification
-- généré à partir des données ci-dessous avec les fonctions ci-dessous
local taxons = {}
taxons["racine"] = { "racine", "racine", false, false }
taxons["Eukaryota"] = { "domaine", "racine", true, false }
taxons["Unikonta"] = { "sous-domaine", "Eukaryota", true, false }
taxons["Opisthokonta"] = { "super-regne", "Unikonta", true, false }
taxons["Metazoa"] = { "regne", "Opisthokonta", true, false }
taxons["Chordata"] = { "embranchement", "Metazoa", true, false }
taxons["Vertebrata"] = { "sous-embranchement", "Chordata", true, false }
taxons["Amniota"] = { "clade", "Vertebrata", true, false }
taxons["Sauropsida"] = { "classe", "Amniota", true, false }
-- fonction pour le traitement recursif : recoit en parametre
-- la table nom+rang+table des sous-taxons ainsi que le nom du parent
-- insert en sortie la definition du taxon courant, et traite recursivement
-- les sous-taxons
function z.recursive(nom, tbl)
local result = ""
local pos = 3
local cur
cur = tbl[1]
-- on affiche la definition du taxon courant
result = 'taxons["' .. cur .. '"] = { "'
result = result .. tbl[2] .. '", "'
result = result .. nom .. '", true, false }\n'
-- on parcours les elements
while true do
-- plus rien
if (nil == tbl[pos]) then
return result
end
-- on traite recursivement l'element
result = result .. z.recursive(cur, tbl[pos])
pos = pos + 1
end
return result
end
-- cette fonction prend la classification ci-dessus et genere les
-- entrees au format "extensif", c'est-a-dire de bas en haut pour
-- permettre de retrouver facilement le parent d'un taxon.
function z.genere_classif(frame)
local result = "<pre>\n-- definition a plat de la classification\n"
result = result .. "local taxons = {}\n"
-- appel a la fonction de traitement
local pos = 3
while true do
if (nil == classif[pos]) then
-- termine
break
end
-- on traite cette sous-branche
result = result .. z.recursive(classif[1], classif[pos])
-- on passe au suivant
pos = pos + 1
end
result = result .. "</pre>\n"
return result
end
return z