Module:Taxobox-data

From Wikipedia

Documentation for this module may be created at Module:Taxobox-data/doc

-- Ce module contient toutes les données utilisées par les taxobox, comme
-- les correspondances code/texte, les catégories, ...
-- Ces données étant locales le module contient également les fonctions
-- permettant d'accéder à ces données.


local data = {}

--- message global, inséré avant la taxobox. Mettre la chaîne vide sinon ("")
data.message = "'''''You need my CSS and my JS to see all the features: [[user:Hexasoft/vector.css]] ; [[user:Hexasoft/vector.js]]'''''<br/>"

--- données de configuration par défaut des options de la taxobox
data.defauts = {}
data.defauts.categories = "auto" -- en ligne, boîte, non, auto. auto=en ligne si article, boîte sinon
data.defauts.err_categories = "auto" -- mêmes valeurs. auto=en ligne si article, boîte sinon
data.defauts.erreurs = "auto" -- oui, non, auto. auto=non si article, oui sinon
data.defauts.sous_titre = "auto" -- oui, non, auto. auto=oui si article, non sinon
data.defauts.titre = "auto" -- oui, non, auto. auto=oui si article, non sinon
data.defauts.raw = "non" -- oui, non.
data.defauts.debug = "non" -- oui, non.


--- syntaxe unifiée des lignes valides
-- début de taxobox. Le règne étant à part il reste : paramètre avec valeur : classification ; non nommés : image, légende
data.df_debut = { ["noname"] = { "image", "legende" }, ["flags"] = { { {"phylo" }, "phylo" } }, ["values"] = { { {"classification", "classif" }, "classification" } } }
-- taxon : un taxon. Que des non nommés : rang, nom, auteur. Il manque en fait obsolète (TODO)
data.df_taxon = { ["noname"] = { "rang", "nom", "auteur" }, ["values"] = { { {"obsolète", "obsolete" }, "obsolete" } }, ["flags"] = { { { "sans auteur" }, "sans auteur" }, { { "titre", "en titre" }, "titre" } } }
-- rang : correspond à {{taxobox}}. Non nommés : rang, nom, [lien]. L'usage lien= semble inutilisé, c'est une occasion de s'en débarrasser.
data.df_rang = { ["noname"] = { "rang", "nom", "lien" }, ["flags"] = { { { "ancien" }, "ancien" } } }
-- fin : fin de la taxobox. Pas de paramètre. En fait optionnel, pourrait disparaître (le module fermant proprement les choses).
data.df_fin = {}
-- UICN : non nommés : risque, [critère, [commentaire]]
data.df_uicn = { ["noname"] = { "risque", "critere", "lien" } }
-- CITES : non nommés : annexe, date, precision
data.df_cites = { ["noname"] = { "annexe", "date", "precision" } }
-- synonymes : non nommés : synonymes
data.df_synonymes = { ["noname"] = { "synonymes" } }
-- taxons : non nommés : taxons
data.df_taxons = { ["noname"] = { "texte", "texte2" } }
-- parents (pour hybride) : non nommés : sexe1, taxon1, sexe2, taxons2
data.df_parents = { ["noname"] = { "sexe1", "taxon1", "sexe2", "taxon2" } }
-- image : non nommés : image, legende. Flag : separateur
data.df_image = { ["noname"] = { "image", "legende" }, ["flags"] = { { { "séparateur", "separateur" }, "separateur" } } }
-- répartition : non nommés : image, legende, taille. Flag : separateur
data.df_repartition = { ["noname"] = { "image", "legende", "taille" }, ["flags"] = { { { "séparateur", "separateur" }, "separateur" } } }
-- légende : non nommés : légende
data.df_legende = { ["noname"] = { "legende" } }
-- légende répartition
data.df_repartition_legende = { ["noname"] = { "legende", "couleur", "couleur2" } }
-- conflit : non nommés : rang, nom1, site1, nom2, site2, nom3, site3
data.df_conflit = { ["noname"] = { "rang", "nom1", "site1", "nom2", "site2", "nom3", "site3" } }
-- phylogénie bandeau : non nommés : image, values : image, classification (note : image peut venir de l'un ou de l'autre
data.df_phylo_bandeau = { ["noname"] = { "image" }, ["values"] = { { { "classification"}, "classification" }, { { "image" }, "image" } } }
-- phylogénie inexistant : non nommé : classification
data.df_phylo_inexistant = { ["noname"] = { "classification" } }
-- position : non nommés : arbre, frere
data.df_position = { ["noname"] = { "arbre", "frere" } }

-- il reste : tout ce qui touche à la répartition, plus 1 ou 2 autres



-- table du règne ajouté automatiquement (ou pas)
local regne_auto = {}
regne_auto["test"] = "Test"
regne_auto["algue"] = "Eukaryota"
regne_auto["animal"] = "Animalia"
regne_auto["archaea"] = "Archaea"
regne_auto["bactérie"] = "Bacteria"
regne_auto["champignon"] = "Fungi"
regne_auto["protiste"] = "Eukaryota"
regne_auto["végétal"] = "Plantae"
regne_auto["virus"] = "Virus"
regne_auto["neutre"] = "Neutre"
regne_auto["eucaryote"] = "Eukaryota"
regne_auto["procaryote"] = "Procaryote"
regne_auto["ndef"] = "'''Règne à préciser'''"

-- règne non automatique. En ce cas il faut utiliser le rang + nom indiqué ici
local regne_noauto = {}
regne_noauto["protiste"] = { "domaine", "Eukaryota" }
regne_noauto["algue"] = { "domaine", "Eukaryota" }


-- table des auteurs manquants selon le règne
local manquants_auteur = {}
manquants_auteur["test"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur incomplet ou manquant]]"
manquants_auteur["algue"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur manquant-algue]]"
manquants_auteur["animal"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur manquant-animal]]"
manquants_auteur["archaea"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur manquant-archaea]]"
manquants_auteur["bactérie"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur manquant-bactérie]]"
manquants_auteur["champignon"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur manquant-champignon]]"
manquants_auteur["protiste"] = "[[Category:Auteur manquant-protiste]]"
manquants_auteur["végétal"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur manquant-végétal]]"
manquants_auteur["virus"] = "[[Category:Auteur manquant-virus]]"
manquants_auteur["neutre"] = ""
manquants_auteur["eucaryote"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur incomplet ou manquant]]"
manquants_auteur["procaryote"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur incomplet ou manquant]]"
manquants_auteur["ndef"] = "[[:Category:Auteur incomplet ou manquant|— auteur incomplet —]][[Category:Auteur incomplet ou manquant]][[Category:Article à taxobox à corriger|Ègne]]"

local manquants_z_auteur = {}
manquants_z_auteur["test"] = "Auteur incomplet ou manquant"
manquants_z_auteur["algue"] = "Auteur manquant-algue"
manquants_z_auteur["animal"] = "Auteur manquant-animal"
manquants_z_auteur["archaea"] = "Auteur manquant-archaea"
manquants_z_auteur["bactérie"] = "Auteur manquant-bactérie"
manquants_z_auteur["champignon"] = "Auteur manquant-champignon"
manquants_z_auteur["protiste"] = "Auteur manquant-protiste"
manquants_z_auteur["végétal"] = "Auteur manquant-végétal"
manquants_z_auteur["virus"] = "Auteur manquant-virus"
manquants_z_auteur["neutre"] = ""
manquants_z_auteur["eucaryote"] = "Auteur incomplet ou manquant"
manquants_z_auteur["procaryote"] = "Auteur incomplet ou manquant"
manquants_z_auteur["ndef"] = "Auteur incomplet ou manquant"

local manquants_date = "[[:Category:Date à préciser|date à préciser]][[Category:Date à préciser]]"
local manquants_z_date = "Date à préciser"
 
 
-- convention de style (CSS) selon le règne (ceci est maintenant obsolète car le style est calculé par programme et plus par CSS)
local styles = {}
styles["algue"] = "algue"
styles["animal"] = "animal"
styles["reptile"] = "animal"
styles["amphibien"] = "animal"
styles["archaea"] = "archaea"
styles["bactérie"] = "bacterie"
styles["champignon"] = "champignon"
styles["protiste"] = "protiste"
styles["végétal"] = "plante"
styles["virus"] = "virus"
styles["neutre"] = "neutre"
styles["eucaryote"] = "eucaryote"
styles["procaryote"] = "procaryote"
 
-- traductions UICN
local uicn = {}
uicn["EX"] = "Éteint"
uicn["PE"] = "Certainement éteint"
uicn["EW"] = "Éteint à l'état sauvage"
uicn["PEW"] = "Certainement éteint à l'état sauvage"
uicn["NE"] = "Non évalué"
uicn["DD"] = "Données insuffisantes"
uicn["CR"] = "En danger critique d'extinction"
uicn["EN"] = "En danger"
uicn["VU"] = "Vulnérable"
uicn["CD"] = "Conservation Dependent"
uicn["NT"] = "Quasi menacé"
uicn["LC"] = "Préoccupation mineure"
uicn["ndef"] = "Paramètre UICN invalide"
 
 
-- table des liens vers les classifications
local classifications = {}
classifications["algaebase"] = "[[AlgaeBase|Classification selon AlgaeBase]]"
classifications["apg"] = "[[Classification APG|Classification APG (1998)]]"
classifications["apgii"] = "[[Classification APG II|Classification APG II (2003)]]"
classifications["apgiii"] = "[[Classification APG III|Classification APG III (2009)]]"
classifications["apwebsite"] = "[[Angiosperm Phylogeny Website|Classification selon APWebsite]]"
classifications["cronquist"] = "[[Classification de Cronquist|Classification de Cronquist (1981)]]"
classifications["dahlgren"] = "[[Classification de Dahlgren|Classification de Dahlgren (1989)]]"
classifications["engler"] = "[[Classification de Engler|Classification de Engler (1924)]]"
classifications["ncbi"] = "[[National Center for Biotechnology Information|Classification selon NCBI]]"
classifications["takhtajan"] = "[[Classification de Takhtajan|Classification de Takhtajan (1997)]]"
classifications["thorne"] = "[[Classification de Thorne|Classification de Thorne (2002)]]"
classifications["raunkier"] = "[[Classification de Raunkier|Classification de Raunkier (1934)]]"
classifications["coi"] = "[[Congrès ornithologique international|Classification (COI)]]"
classifications["peterson"] = "[[Alan P. Peterson|Classification de Alan P. Peterson]]"
classifications["sibley"] = "[[Classification de Sibley-Ahlquist]]"
classifications["asw"] = "[[Amphibian Species of the World|Classification selon ASW]]"
classifications["reptiledb"] = "[[The Reptile Database|Classification selon ReptileDB]]"
classifications["tftsg"] = "[[Tortoise and Freshwater Turtle Specialist Group|Classification selon TFTSG]]"
classifications["msw"] = "[[Mammal Species of the World|Classification selon MSW]]"
classifications["fungorum"] = "[[Index Fungorum|Classification selon Index Fungorum]]"
classifications["mycobank"] = "[http://www.mycobank.org/ Classification selon MycoBank]"
classifications["catalogueoflife"] = "[[Catalogue of Life|Classification selon Catalogue of Life]]"
classifications["lecointre"] = "[[Classification phylogénétique de Guillaume Lecointre et Hervé Le Guyader|Classification de Lecointre et Le Guyader]]"
classifications["végétal"] = "[[Classification classique]]"
classifications["virus"] = "[[Classification des virus]]"
classifications["ndef"] = "[[Classification des espèces|Classification]]"
classifications["ndef phylo"] = "[[Classification phylogénétique]]"


-- table des sites de référence (code → forme affichable)
local ref_sites = {}
ref_sites["adw"] = "[[Animal Diversity Web|ADW]]"
ref_sites["algaebase"] = "[http://www.algaebase.org AlgaeBase]"
ref_sites["apgii"] = "[[Classification APG II|APG II]]"
ref_sites["apgiii"] = "[[Classification APG III|APG III]]"
ref_sites["apwebsite"] = "[[Angiosperm Phylogeny Website|APWebsite]]"
ref_sites["a.z.lehrer"] = "''A.Z. Lehrer''"
ref_sites["biolib"] = "[http://www.biolib.cz/en/ BioLib]"
ref_sites["catalogueoflife"] = "[[Catalogue of Life|CoL]]"
ref_sites["cites"] = "[[Convention sur le commerce international des espèces de faune et de flore sauvages menacées d'extinction|CITES]]"
ref_sites["coi"] = "[[Congrès ornithologique international|COI]]"
ref_sites["commons"] = "[[:commons:Accueil|Wikicommons]]"
ref_sites["wikicommons"] = "[[:commons:Accueil|Wikicommons]]"
ref_sites["cronquist"] = "[[Classification_de_Cronquist|Cronquist]]"
ref_sites["doris"] = "[[DORIS (FFESSM)|DORIS]]"
ref_sites["en"] = "[[:en:Accueil|en]]"
ref_sites["faunaeur"] = "[[Fauna Europaea|Faunaeur]]"
ref_sites["fishbase"] = "[[FishBase]]"
ref_sites["funet"] = "[http://www.nic.funet.fi/pub/sci/bio/life/ Funet]"
ref_sites["grin"] = "[http://www.ars-grin.gov/ GRIN]"
ref_sites["indexfungorum"] = "[[Index Fungorum|IndexFungorum]]"
ref_sites["itis"] = "[[Système d'information taxonomique intégré|ITIS]]"
ref_sites["lehrer"] = "[[Andy Z. Lehrer|A.Z.Lehrer]]"
ref_sites["lepindex"] = "[http://www.nhm.ac.uk/research-curation/research/projects/butmoth/ LepIndex]"
ref_sites["miller-butterworth2007"] = "[http://mbe.oxfordjournals.org/content/24/7/1553.full Miller-Butterworth<small> 2007</small>]"
ref_sites["msw"] = "[[Mammal Species of the World|MSW]]"
ref_sites["ncbi"] = "[[National Center for Biotechnology Information|NCBI]]"
ref_sites["reptiledb"] = "[[The Reptile Database|ReptileDB]]"
ref_sites["sibley"] = "[[Classification de Sibley-Ahlquist|Sibley]]"
ref_sites["teeling2005"] = "[http://bcrc.bio.umass.edu/courses/fall2006/biol/biol597l/Teeling_2005.pdf Teeling<small> 2005</small>]"
ref_sites["tolweb"] = "[http://tolweb.org Tolweb]"
ref_sites["tpdb"] = "[[The Paleobiology database|PaleoDB]]"
ref_sites["uicn"] = "[[Union internationale pour la conservation de la nature|UICN]]"
ref_sites["species"] = "[[:species:Accueil|Wikispecies]]"
ref_sites["wikispecies"] = "[[:species:Accueil|Wikispecies]]"
ref_sites["worms"] = "[http://www.marinespecies.org/ WoRMS]"
ref_sites["?"] = "[[Wikipédia:Citez vos sources|?]]"
ref_sites["??"] = "[[Wikipédia:Citez vos sources|?]]"
ref_sites["???"] = "[[Wikipédia:Citez vos sources|?]]"
ref_sites["????"] = "[[Wikipédia:Citez vos sources|?]]"


-- table pour les conventions typographiques selon les règnes (1=zoologie, 0=botanique)
local conventions = {}
conventions["test"] = 1
conventions["algue"] = 0
conventions["animal"] = 1
conventions["reptile"] = 1
conventions["amphibien"] = 1
conventions["archaea"] = 0
conventions["bactérie"] = 0
conventions["champignon"] = 0
conventions["protiste"] = 0
conventions["végétal"] = 0
conventions["virus"] = 0
conventions["neutre"] = 0
conventions["eucaryote"] = 1
conventions["procaryote"] = 0
 
 
-- table pour les niveaux de classifications. Contient le nom affiché, s'il est <= genre, un numéro d'ordre
local niveaux = {}
niveaux["clade"] = { "[[Clade]]", 0, 1}
niveaux["type"] = { "[[Classification des virus|Type]]", 0, 2}
niveaux["groupe"] = { "[[Classification des virus#Classification par type de génome|Groupe]]", 0, 3}
niveaux["non-classé"] = { "— non-classé —", 0, 4}
niveaux["sous-forme"] = { "[[Forme (botanique)|Sous-forme]]", 1, 5}
niveaux["forme"] = { "[[Forme (botanique)|Forme]]", 1, 6}
niveaux["cultivar"] = { "[[Cultivar]]", 1, 7}
niveaux["variété"] = { "[[Variété (botanique)|Variété]]", 1, 8}
niveaux["sous-espèce"] = { "[[Sous-espèce]]", 1, 9}
niveaux["hybride"] = { "[[Hybride]]", 1, 10}
niveaux["espèce"] = { "[[Nom binominal]]", 1, 11}
niveaux["sous-série"] = { "[[Série (biologie)|Sous-série]]", 1, 12}
niveaux["série"] = { "[[Série (biologie)|Série]]", 1, 13}
niveaux["sous-section"] = { "[[Section (biologie)|Sous-section]]", 1, 14}
niveaux["section"] = { "[[Section (biologie)|Section]]", 1, 15}
niveaux["sous-genre"] = { "[[Sous-genre (biologie)|Sous-genre]]", 1, 16}
niveaux["genre"] = { "[[Genre (biologie)|Genre]]", 1, 17}
niveaux["sous-tribu"] = { "[[Tribu (biologie)|Sous-tribu]]", 0, 18}
niveaux["tribu"] = { "[[Tribu (biologie)|Tribu]]", 0, 19}
niveaux["super-tribu"] = { "[[Tribu (biologie)|Super-tribu]]", 0, 20}
niveaux["infra-tribu"] = { "[[Tribu (biologie)|Infra-tribu]]", 0, 21}
niveaux["sous-famille"] = { "[[Sous-famille]]", 0, 22}
niveaux["famille"] = { "[[Famille (biologie)|Famille]]", 0, 23}
niveaux["épifamille"] = { "[[Famille (biologie)|Épifamille]]", 0, 24}
niveaux["super-famille"] = { "[[Super-famille (biologie)|Super-famille]]", 0, 25}
niveaux["micro-ordre"] = { "[[Micro-ordre]]", 0, 26}
niveaux["infra-ordre"] = { "[[Infra-ordre]]", 0, 27}
niveaux["sous-ordre"] = { "[[Sous-ordre]]", 0, 28}
niveaux["ordre"] = { "[[Ordre (biologie)|Ordre]]", 0, 29}
niveaux["super-ordre"] = { "[[Super-ordre (biologie)|Super-ordre]]", 0, 30}
niveaux["sous-cohorte"] = { "[[Cohorte (biologie)|Sous-cohorte]]", 0, 31}
niveaux["cohorte"] = { "[[Cohorte (biologie)|Cohorte]]", 0, 32}
niveaux["super-cohorte"] = { "[[Cohorte (biologie)|Super-cohorte]]", 0, 33}
niveaux["infra-classe"] = { "[[Infra-classe]]", 0, 34}
niveaux["sous-classe"] = { "[[Sous-classe (biologie)|Sous-classe]]", 0, 35}
niveaux["classe"] = { "[[Classe (biologie)|Classe]]", 0, 36}
niveaux["super-classe"] = { "[[Super-classe (biologie)|Super-classe]]", 0, 37}
niveaux["infra-embranchement"] = { "[[Infra-embranchement|Infra-embr.]]", 0, 38}
niveaux["sous-embranchement"] = { "[[Sous-embranchement|Sous-embr.]]", 0, 39}
niveaux["embranchement"] = { "[[Embranchement (biologie)|Embranchement]]", 0, 40}
niveaux["super-embranchement"] = { "[[Super-embranchement|Super-embr.]]", 0, 41}
niveaux["sous-division"] = { "[[Sous-division (biologie)|Sous-division]]", 0, 42}
niveaux["division"] = { "[[Division (biologie)|Division]]", 0, 43}
niveaux["super-division"] = { "[[Division (biologie)|Super-division]]", 0, 44}
niveaux["infra-règne"] = { "[[Infra-règne]]", 0, 45}
niveaux["rameau"] = { "[[Rameau (biologie)|Rameau]]", 0, 46}
niveaux["sous-règne"] = { "[[Sous-règne]]", 0, 47}
niveaux["règne"] = { "[[Règne (biologie)|Règne]]", 0, 48}
niveaux["super-règne"] = { "[[Règne (biologie)|Super-règne]]", 0, 49}
niveaux["sous-domaine"] = { "[[Sous-domaine (biologie)|Sous-domaine]]", 0, 50}
niveaux["domaine"] = { "[[Domaine (biologie)|Domaine]]", 0, 51}
niveaux["empire"] = { "[[Domaine (biologie)|Empire]]", 0, 52}
niveaux["ndef"] = { "<erreur>", 0, 99}


-- retourne l'auteur manquant selon le regne
function data.auteur_manquant(regne)
    return manquants_auteur[regne] or manquants_auteur["ndef"]
end
-- retourne l'auteur manquant selon le regne
function data.auteur_t_manquant(regne)
    return manquants_t_auteur[regne] or manquants_t_auteur["ndef"]
end
-- retourne l'auteur manquant selon le regne
function data.auteur_c_manquant(regne)
    return manquants_c_auteur[regne] or manquants_c_auteur["ndef"]
end
-- retourne l'auteur manquant selon le regne
function data.auteur_l_manquant(regne)
    return manquants_l_auteur[regne] or manquants_l_auteur["ndef"]
end

-- retourne la date manquante
function data.date_manquante(regne)
    return manquants_date
end
-- retourne la date manquante
function data.date_t_manquante(regne)
    return manquants_t_date
end
-- retourne la date manquante
function data.date_c_manquante(regne)
    return manquants_c_date
end
-- retourne la date manquante
function data.date_l_manquante(regne)
    return manquants_l_date
end

-- retourne le nom de la menace IUCN
function data.uicn(nom)
    return uicn[nom] or uicn["ndef"]
end

-- retourne le style (CSS) a partir du règne (obsolète : l'italique est calculée par programme)
function data.style(regne)
    return styles[regne] or ""
end

-- retourne la classification (lien) en fonction du paramètre
function data.classification(classif)
    return classifications[string.lower (classif)] or classifications["ndef"]
end

-- retourne la classification (lien) en fonction du paramètre, ou nil (et non l'entrée par défaut)
function data.classification_existe(classif)
    if (classif == nil) then
        return nil
    end
    return classifications[string.lower (classif)]
end

-- retourne l'italique (chaine : '') si regne + rang doit l'être
function data.italiques(regne, rang)
    -- les regnes qui ne suivent pas la zoologie sont en italiques
    local conv = conventions[string.lower(regne)] or 1
    if ( conv == 0 ) then
        return "''"
    end
    -- sinon seulement ceux en dessous du genre
    local ifgenre = niveaux[string.lower(rang)] or niveaux["ndef"]
    if ( ifgenre[2] == 1 ) then
        return "''"
    else
        return ""
    end
end


-- retourne vrai s'il faut l'italique
function data.italiques_vf(regne, rang)
    -- les regnes qui ne suivent pas la zoologie sont en italiques
    local conv = conventions[regne] or 1
    if ( conv == 0 ) then
        return true
    end
    -- sinon seulement ceux en dessous du genre
    local ifgenre = niveaux[string.lower(rang)] or niveaux["ndef"]
    if ( ifgenre[2] == 1 ) then
        return true
    else
        return false
    end
end

-- retourne {false, {<catégorie d'erreur>, 0} } si le nom passé n'est pas un rang valide. Sinon retourne { true, { "lien affichable du rang", 0/1 }}
--     ce dernier signifiant : 0=au dessus du genre, 1=au dessous du genre
function data.est_rang(nom)
    local retour = niveaux[string.lower(nom)]
 
    if ( nil ~= retour ) then
        return { 1, retour }
    else
        return { 0, niveaux["ndef"] }
    end
end


-- Fonction ayant pour but de lister le contenu des données.
-- À utiliser dans les docs typiquement, afin qu'une modification/ajout dans les données
--  soit répercuté directement, sans avoir à mettre à jour partout.

-- liste les classifications reconnues
function data.liste_classifications()
    local result = "Classifications reconnues :\n"
    for i,v in pairs(classifications) do
        result = result .. "* " .. i .. " : " .. v .. "\n"
    end
    return result .. "\n"
end

-- liste les styles (CSS) reconnus
function data.liste_styles()
    local result = "Styles (CSS) reconnus :\n"
    for i,v in pairs(styles) do
        result = result .. "* " .. i .. " : " .. v
        -- ajout pseudo-boîte pour afficher les couleurs
        result = result .. ' <table witdh=50px><tr><td><div width="50px" class="' .. v .. ' taxobox_v3"><p class="entete">&nbsp;</p><p class="bloc">&nbsp;</p></div></td></tr></table>\n'
    end
    return result .. "\n"
end

-- liste les rangs reconnus
function data.liste_niveaux()
    local result = "Rangs reconnus :\n"
    for i,v in pairs(niveaux) do
        result = result .. "* " .. i .. " : " .. table.concat(v, " / ") .. "\n"
    end
    return result .. "\n"
end

-- liste les critères UICN reconnus
function data.liste_uicn()
    local result = "Critères UICN reconnus :\n"
    for i,v in pairs(uicn) do
        result = result .. "* " .. i .. " : " .. v .. "\n"
    end
    return result .. "\n"
end

-- liste les conventions reconnues
function data.liste_conventions()
    local result = "Conventions reconnues :\n"
    for i,v in pairs(conventions) do
        result = result .. "* " .. i .. " : " .. v .. "\n"
    end
    return result .. "\n"
end

-- liste les paramètres + explication
function data.liste_parametres()
    local result = "Paramètres reconnus et rôle :\n"
    for i,v in pairs(parametres) do
        result = result .. "* " .. i .. " : " .. v .. "\n"
    end
    return result .. "\n"
end

-- accès aux sites de référence (ref_sites)
function data.ref_sites(code)
    return ref_sites[string.lower(code)]
end


-- prend un nom de paramètre (nommé) et retourne vrai si celui-ci existe
-- dans la liste des paramètres reconnus, faux sinon
function data.valide_parametres(arg)
    if (nil ~= parametres[arg]) then
        return true
    else
        return false
    end
end

-- retourne le premier rang de la classification en fonction du règne
-- retourne 'nil' si il n'y a pas de première ligne à mettre
function data.premier_regne(regne)
    local tmp = regne_auto[regne]
    if (tmp == nil or tmp == "") then
        return nil
    else
        return tmp
    end
end

-- retourne l'exception de premier rang de la classification en fonction du règne
-- retourne 'nil' si il n'y a pas d'exception
-- le retour est { rang, nom } (nom déjà formaté)
function data.premier_noregne(regne)
    local tmp = regne_noauto[regne]
    if (tmp == nil or tmp == "") then
        return nil
    else
        return tmp
    end
end


return data