Modulo:Tassobox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
superordine
m ulteriore compatibilità dark mode
 
(8 versioni intermedie di 5 utenti non mostrate)
Riga 1:
--[[
Questo modulo è in appoggio al template Tassobox, per il richiamo di un'immagine
di file mancante appropriata al regno/phylum/classe/ordine/ecc della voce in cui è inserito
]]
 
local p = {}
local cfg = mw.loadData("Modulo:Tassobox/Configurazione")
 
local getArgs = require('Module:Arguments').getArgs
--Tabella di corrispondenza tra valore e file da richiamare
local missing_table ={
['[[coleoptera]]'] = 'File:Missing Coleoptera.png',
['[[diptera]]'] = 'File:Missing Diptera.png',
['[[hymenoptera]]'] = 'File:Missing Hymenoptera.png',
['[[lepidoptera]]'] = 'File:Missing Lepidoptera.png',
['[[rhynchota]]'] = 'File:Missing Rhynchota.png',
['[[artiodactyla]]'] = 'File:Missing Artiodactyla.png',
['[[carnivora]]'] = 'File:Missing Carnivora.png',
['[[cetacea]]'] = 'File:Missing Cetacea.png',
['[[cingulata]]'] = 'File:Missing Cingulata.png',
['[[chiroptera]]'] = 'File:Missing Chiroptera.png',
['[[diprotodontia]]'] = 'File:Missing Diprotodontia.png',
['[[dasyuromorphia]]'] = 'File:Missing Dasyuromorphia.png',
['[[peramelemorphia]]'] = 'File:Missing Peramelemorphia.png',
['[[didelphimorphia]]'] = 'File:Missing Didelphimorphia.png',
['[[lagomorpha]]'] = 'File:Missing Lagomorpha.png',
['[[perissodactyla]]'] = 'File:Missing Perissodactyla.png',
['[[pilosa]]'] = 'File:Missing Pilosa.png',
['[[proboscidea]]'] = 'File:Missing Proboscidea.png',
['[[primates]]'] = 'File:Missing Primates.png',
['[[rodentia]]'] = 'File:Missing Rodentia.png',
['[[soricomorpha]]'] = 'File:Missing Soricomorpha.png',
['[[actinopterygii]]'] = 'File:Missing Actinopterygii.png',
['[[amphibia]]'] = 'File:Missing Amphibia.png',
['[[arachnida]]'] = 'File:Missing Arachnida.png',
['[[aves]]'] = 'File:Missing Aves.png',
['[[chondrichthyes]]'] = 'File:Missing Chondrichthyes.png',
['[[gastropoda]]'] = 'File:Missing Gastropoda.png',
['[[dinosauria]]'] = 'File:Missing Dinosauria.png',
['[[reptilia]]'] = 'File:Missing Reptilia.png',
['[[lacertilia]]'] = 'File:Missing Sauria.png',
['[[sauria]]'] = 'File:Missing Sauria.png',
['[[serpentes]]'] = 'File:Missing Reptilia.png',
['[[testudines]]'] = 'File:Missing Testudines.png',
['[[crocodilia]]'] = 'File:Missing Crocodilia.png',
['[[crocodylia]]'] = 'File:Missing Crocodilia.png',
['[[hexapoda]]'] = 'File:Missing Hexapoda.png',
['[[mammalia]]'] = 'File:Missing Mammalia.png',
['[[crustacea]]'] = 'File:Missing Crustacea.png',
['[[arthropoda]]'] = 'File:Missing Arthropoda.png',
['[[annelida]]'] = 'File:Missing Annelida.png',
['[[anthozoa]]'] = 'File:Missing Anthozoa.png',
['[[cnidaria]]'] = 'File:Missing Cnidaria.png',
['[[echinodermata]]'] = 'File:Missing Echinodermata.png',
['[[animalia]]'] = 'File:Animalia missing.png',
['[[plantae]]'] = 'File:Plantae missing 1.png',
['[[fungi]]'] = 'File:Fungi missing.png',
['[[archaea]]'] = 'File:Bacteria missing.png',
['[[bacteria]]'] = 'File:Bacteria missing.png',
['[[protista]]'] = 'File:Protista missing 1.png',
['[[chromista]]'] = 'File:Protista missing 1.png',
['[[acytota]]'] = 'File:Acytota missing.png',
['[[cycadophyta]]'] = 'File:Missing Cycadophyta.png',
['[[magnoliophyta]]'] = 'File:Missing Magnoliophyta.png',
['[[charophyta]]'] = 'File:Missing Charophyta.png',
['[[pteridophyta]]'] = 'File:Missing Pteridophyta.png',
['[[pinophyta]]'] = 'File:Missing Pinophyta.png',
['[[chlorophyta]]'] = 'File:Missing Chlorophyta.png',
['[[rhodophyta]]'] = 'File:Missing Rhodophyta.png'
}
 
local function check_value(valore)
return valore and cfg.missing_table[mw.ustring.lower(valore)]
if valore == nil then
return nil
else
return missing_table[mw.ustring.lower(valore)]
end
end
 
--===================================================================
-- Richiamo di un'immagine di file mancante appropriata al
-- regno/phylum/classe/ordine/ecc della voce in cui è inserito
-- il tassobox
--===================================================================
function p.missing_image(frame)
local args = getArgs(frame, {wrapper = 'Template:Tassobox'})
-- Richiama i parametri originali del template
local missing_link
local pframe = frame:getParent()
-- testa in ordine dal più specifico al più generico la classificazione di un essere vivente
for _,test in ipairs(cfg.param_to_check) do
-- se non trova il valore nella tabella ricade nell'immagine di default
missing_link = args[test] and check_value(args[test])
missing_link = check_value(pframe.args["sottordine"]) or check_value(pframe.args["superordine"]) or check_value(pframe.args["ordine"]) or check_value(pframe.args["classe"]) or check_value(pframe.args["superclasse"]) or
if missing_link then break end
check_value(pframe.args["subphylum"]) or check_value(pframe.args["phylum"]) or check_value(pframe.args["divisione"]) or
end
check_value(pframe.args["regno"]) or check_value(pframe.args["dominio"]) or "File:Unknown missing 1.png"
-- se ha non trovato il valore nella tabella ricade nell'immagine di default
return '[[' .. missing_link ..'|220px|Immagine di ' .. mw.title.getCurrentTitle().text .. ' mancante]]'
missing_link = missing_link or "File:Unknown missing 1.png"
return mw.ustring.format('[[%s|220px|Immagine di %s mancante|class=skin-invert itwiki-preserve-color]]', missing_link, mw.title.getCurrentTitle().text)
end
 
----------------------------------------------------------------------------------
-- Ritorna la configurazione della tabella per le ere geologiche
----------------------------------------------------------------------------------
function p.ere_geologiche_table(frame)
-- Restituisce una tabella delle ere geologiche presenti in configurazione
local root = mw.html.create('table')
root
:addClass('wikitable sortable')
:tag('tr')
:tag('th'):wikitext('Era'):done()
:tag('th'):wikitext('Inizio'):done()
:tag('th'):wikitext('Successiva'):done()
:tag('th'):wikitext('Colore'):done()
for name, values in pairs(cfg.ere_geologiche) do
local start = values['start'] or "?"
local next_era = values['next_era'] or "?"
local color
if values['color'] then
color = mw.html.create('span')
:cssText("display:inline-block;border:solid grey 1px;width:1em;height:1em")
:css('background', values['color'])
:wikitext(' ')
else
color = mw.html.create('span'):done()
end
root:tag('tr')
:tag('td'):wikitext(name):done()
:tag('td'):css('text-align', 'right'):wikitext(start):done()
:tag('td'):wikitext(next_era):done()
:tag('td'):css('text-align', 'center'):node(color)
end
return tostring(root)
end
 
--===================================================================
-- Genera lo stato di conservazione di uno specie
--===================================================================
function p.stato_conservazione(frame)
 
local args = getArgs(frame, {wrapper = 'template:Tassobox'})
local statocons = args.statocons
if statocons == nil then return end
local iucn = { ['iucn2.3'] = true, ['iucn3.1'] = true}
statocons = mw.ustring.lower(statocons)
statocons = cfg.stato_alias[statocons] or statocons
local row_stato = cfg.stato[statocons]
if row_stato == nil then
local cat_error = ''
if mw.title.getCurrentTitle().namespace == 0 then
cat_error = '[[Categoria:Errori di compilazione del template Tassobox]]'
end
return '<strong class=\"error\">Parametro statocons non valido</div>' .. cat_error
end
local immagine = ''
if row_stato.image then
if row_stato.versione then
local versione = args.statocons_versione or ''
versione = (iucn[versione] and versione) or (statocons == 'ex' and 'none') or 'iucn3.1'
if versione == 'none' then
immagine = 'Status_none_EX.svg'
else
immagine = mw.ustring.format(row_stato.image, versione)
end
else
immagine = row_stato.image
end
immagine = '<div>\[\[Image:' .. immagine .. '|200px\]\]</div>'
end
local ref = args.statocons_ref
ref = (ref and '<span style=font-size:80%>' .. ref .. '</span>') or ''
local dataestinzione = ''
if row_stato.data then
dataestinzione = (row_stato.pre_data and ' ' .. row_stato.pre_data) or dataestinzione
dataestinzione = (args.dataestinzione and mw.ustring.format(row_stato.data, args.dataestinzione)) or dataestinzione
dataestinzione = mw.ustring.format('<span style="color:%s;">%s</span>', row_stato.color_data or row_stato.color, dataestinzione)
end
local base_msg =
'<div style="margin:0 auto; text-align:center;%s" class="skin-invert itwiki-preserve-color">'..
'%s<div style="color:%s;font-weight:bold;">%s%s%s</div>' ..
'</div>'
return mw.ustring.format(base_msg, ((immagine and 'background:white;') or ''), immagine, row_stato.color, row_stato.text, dataestinzione, ref)
end