Jump to content

Module:TaxoboxClassification Haut

Unchecked
From Wikipedia

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