Diferencia entre revisiones de «Módulo:Ficha de taxón»
mSin resumen de edición |
mSin resumen de edición |
||
Línea 490: | Línea 490: | ||
end |
end |
||
if Federaciones then Federaciones = '<div style="display: -webkit-flex;display: -moz-flexbox;display: -ms-flexbox;display: flex;-webkit-justify-content: space-between;-moz-justify-content: space-between;-ms-justify-content: space-between;justify-content: space-between;">' .. Federaciones .. '</div>' end |
if not Federaciones == '' then Federaciones = '<div style="display: -webkit-flex;display: -moz-flexbox;display: -ms-flexbox;display: flex;-webkit-justify-content: space-between;-moz-justify-content: space-between;-ms-justify-content: space-between;justify-content: space-between;">' .. Federaciones .. '</div>' end |
||
--:: Otros |
--:: Otros |
Revisión del 01:34 12 mar 2020
A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]
Este es un módulo en construcción. No debe ser usado en artículos enciclopédicos (aún).
Este módulo pretende reemplazar a {{Ficha de taxón}}
y otras fichas relacionadas. Es un módulo altamente complejo, capaz de importar el arbol taxonómico desde Wikidata. También pretende integrar otras plantillas relacionadas, entre ellas:
-
{{Ficha de taxón}}
compleja, estable pero puede que quede trabajo -
{{Ficha de raza}}
fácil, estable pero puede que quede trabajo -
{{Ficha de fósil}}
fácil, terminada -
{{Ficha de fungi}}
fácil, terminada -
{{Ficha de icnotaxón}}
fácil, terminada compleja, en un módulo dedicado{{Ficha de proteína}}
Todas las plantillas permanecerán independientes, pero usarán el mismo módulo.
Estado
Si bien el módulo es capaz de imitar casi a la perfección la actual plantilla, aún no se considera como "completo"
Advertencia: Debido a la extrema complejidad del módulo, este ha causado algunos problemas de rendimiento, especialmente con páginas con muchas plantillas o referencias. El proceso de optimización se verá retrasado por el proceso de agregado de características y depuración.
Úsese bajo su propio riesgo.
Notas
La llamada recursiva a taxón superior inmediato (P171) obtiene solo el dato del primer valor posicional, y debe llevar al menos hasta reino (Q36732), de lo contrario, el esquema de colores de la plantilla se rompe.
Páginas donde es usado
- Taller
- Gato, funciona como se espera
- Felis silvestris, funciona como se espera.
- Felis silvestris, funciona como se espera.
- Bacteria, funciona como se espera.
- Virus, funciona como se espera.
- Fósil, en algunos casos la plantilla
{{Rango fósil}}
falla al proporcionarse un valor inválido. - Raza, falla porque debo resolver la relación de progenitores del híbrido (P1531) → Felis silvestris catus (Q57818409); Leptailurus serval (Q42699)
- Espacio principal
Transclusiones
Módulo:Ficha_de_taxón/casos de prueba
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.
local p = {}
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloPaginas = require('Módulo:Páginas')
local elementoTabla = require('Módulo:Tablas').elemento
local getUnit = require('Módulo:Ficha/unidades').main
local argumentos
local Entidad
local InstanciaDeID
function p.Ficha(frame)
-- :: Inicializardor
argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame)
Entidad = mw.wikibase.getEntity(argumentos['id']) or mw.wikibase.getEntity(argumentos['entidad']) or {}
local InstanciaDe = elementoTabla(Entidad, 'claims', 'P31', 1)
if InstanciaDe then InstanciaDeID = elementoTabla(InstanciaDe, 'mainsnak', 'datavalue', 'value', 'id') end
--:: Datos taxonómicos
local Taxonomia = obtenerTaxonomia() or {}
local Todo = argumentos['todo']
local Domain = argumentos['dominio'] or argumentos['domain'] or Taxonomia['dominio']
local DomainAuth = argumentos['dominio_autoridad'] or argumentos['domain_authority']-- or Taxonomia['']
local RegnumUn = argumentos['reino_sin_clasificar'] or argumentos['unranked_regnum']-- or Taxonomia['']
local RegnumUnAuth = argumentos['reino_sin_clasificar_autoridad'] or argumentos['unranked_regnum_authority']-- or Taxonomia['']
local Superregnum = argumentos['superreino'] or argumentos['superregnum'] or Taxonomia['superreino']
local SuperregnumAuth = argumentos['superreino_autoridad'] or argumentos['superregnum_authority']-- or Taxonomia['']
local Regnum = argumentos['reino'] or argumentos['regnum'] or Taxonomia['reino']
local RegnumAuth = argumentos['reino_autoridad'] or argumentos['regnum_authority']-- or Taxonomia['']
local Subregnum = argumentos['subreino'] or argumentos['subregnum'] or Taxonomia['subreino']
local SubregnumAuth = argumentos['subreino_autoridad'] or argumentos['subregnum_authority']-- or Taxonomia['']
local PhilumUn = argumentos['filo_sin_clasificar'] or argumentos['unranked_phylum']-- or Taxonomia['']
local PhilumUnAuth = argumentos['filo_sin_clasificar_autoridad'] or argumentos['unranked_phylum_authority']-- or Taxonomia['']
local Superdivisio = argumentos['superdivisión'] or argumentos['superdivisio'] or Taxonomia['superdivisión']
local SuperdivisioAuth = argumentos['superdivisió_autoridad'] or argumentos['superdivisio_authority']-- or Taxonomia['']
local Superphylum = argumentos['superfilo'] or argumentos['superphylum'] or Taxonomia['superfilo']
local SuperphylumAuth = argumentos['superfilo_autoridad'] or argumentos['superphylum_authority']-- or Taxonomia['']
local Divisio = argumentos['división'] or argumentos['divisio'] or Taxonomia['división']
local DivisioAuth = argumentos['división_autoridad'] or argumentos['divisio_authority']-- or Taxonomia['']
local Phylum = argumentos['filo'] or argumentos['phylum'] or Taxonomia['filo']
local PhylumAuth = argumentos['filo_autoridad'] or argumentos['phylum_authority']-- or Taxonomia['']
local Subdivisio = argumentos['subdivisión'] or argumentos['subdivisio']
local SubdivisioAuth = argumentos['subdivisión_autoridad'] or argumentos['subdivisio_authority']
local Subphylum = argumentos['subfilo'] or argumentos['subphylum'] or Taxonomia['subfilo']
local SubphylumAuth = argumentos['subfilo_autoridad'] or argumentos['subphylum_authority']-- or Taxonomia['']
local Infraphylum = argumentos['infrafilo'] or argumentos['infraphylum'] or Taxonomia['infrafilo']
local InfraphylumAuth = argumentos['infrafilo_autoridad'] or argumentos['infraphylum_authority']-- or Taxonomia['']
local Microphylum = argumentos['microfilo'] or argumentos['microphylum'] or Taxonomia['microfilo']
local MicrophylumAuth = argumentos['microfilo_autoridad'] or argumentos['microphylum_authority']-- or Taxonomia['']
local Nanophylum = argumentos['nanofilo'] or argumentos['nanophylum'] or Taxonomia['nanofilo']
local NanophylumAuth = argumentos['nanophylum_autoridad'] or argumentos['nanophylum_authority']-- or Taxonomia['']
local ClassisUn = argumentos['clase_sin_clasificar'] or argumentos['unranked_classis']-- or Taxonomia['']
local ClassisUnAuth = argumentos['clase_sin_clasificar_autoridad'] or argumentos['unranked_classis_authority']-- or Taxonomia['']
local Superclassis = argumentos['superclase'] or argumentos['superclassis'] or Taxonomia['superclase']
local SuperclassisAuth = argumentos['superclase_autoridad'] or argumentos['superclassis_authority']-- or Taxonomia['']
local Classis = argumentos['clase'] or argumentos['classis'] or Taxonomia['clase']
local ClassisAuth = argumentos['clase_autoridad'] or argumentos['classis_authority']-- or Taxonomia['']
local Subclassis = argumentos['subclase'] or argumentos['subclassis'] or Taxonomia['subclase']
local SubclassisAuth = argumentos['subclase_autoridad'] or argumentos['subclassis_authority']-- or Taxonomia['']
local Infraclassis = argumentos['infraclase'] or argumentos['infraclassis'] or Taxonomia['infraclase']
local InfraclassisAuth = argumentos['infraclase_autoridad'] or argumentos['infraclassis_authority']-- or Taxonomia['']
local OrdoUn = argumentos['orden_sin_clasificar'] or argumentos['unranked_ordo']-- or Taxonomia['']
local OrdoUnAuth = argumentos['orden_sin_clasificar_autoridad'] or argumentos['unranked_ordo_authority']-- or Taxonomia['']
local Magnordo = argumentos['magnoorden'] or argumentos['magnordo'] or Taxonomia['magnoorden']
local MagnordoAuth = argumentos['magnoorden_autoridad'] or argumentos['magnordo_authority']-- or Taxonomia['']
local Superordo = argumentos['superorden'] or argumentos['superordo'] or Taxonomia['superorden']
local SuperordoAuth = argumentos['superorden_autoridad'] or argumentos['superordo_authority']-- or Taxonomia['']
local Granordo = argumentos['granorden'] or argumentos['granordo']-- or Taxonomia['']
local GranordoAuth = argumentos['GranOrden_autoridad'] or argumentos['granordo_authority']-- or Taxonomia['']
local Ordo = argumentos['orden'] or argumentos['ordo'] or Taxonomia['orden']
local OrdoAuth = argumentos['orden_autoridad'] or argumentos['ordo_authority']-- or Taxonomia['']
local Subordo = argumentos['suborden'] or argumentos['subordo'] or Taxonomia['suborden']
local SubordoAuth = argumentos['suborden_autoridad'] or argumentos['subordo_authority']-- or Taxonomia['']
local Infraordo = argumentos['infraorden'] or argumentos['infraordo'] or Taxonomia['infraorden']
local InfraordoAuth = argumentos['infraorden_autoridad'] or argumentos['infraordo_authority']-- or Taxonomia['']
local Pavordo = argumentos['parvorden'] or argumentos['parvordo'] or Taxonomia['parvorden']
local PavordoAuth = argumentos['parvorden_autoridad'] or argumentos['parvordo_authority']-- or Taxonomia['']
local Zoodovisio = argumentos['zoodivisión'] or argumentos['zoodivisio'] or Taxonomia['zoodivisión']
local ZoodivisioAuth = argumentos['zoodivisión_autoridad'] or argumentos['zoodivisio_authority']-- or Taxonomia['']
local Zoosectio = argumentos['zoosectión'] or argumentos['zoosectio'] or Taxonomia['zoosectión']
local ZoosectioAuth = argumentos['zoosectión_autoridad'] or argumentos['zoosectio_authority']-- or Taxonomia['']
local Zoosubsectio = argumentos['zoosubsectión'] or argumentos['zoosubsectio'] or Taxonomia['oosubsectión']
local ZoosubsectioAuth = argumentos['zoosubsectión_autoridad'] or argumentos['zoosubsectio_authority']-- or Taxonomia['']
local FamiliaUn = argumentos['familia_sin_clasificar'] or argumentos['unranked_familia']-- or Taxonomia['']
local FamiliaAuthUn = argumentos['familia_sin_clasificar_autoridad'] or argumentos['unranked_familia_authority']-- or Taxonomia['']
local Superfamilia = argumentos['superfamilia'] or Taxonomia['superfamilia']
local SuperfamiliaAuth = argumentos['superfamilia_autoridad'] or argumentos['superfamilia_authority']-- or Taxonomia['']
local Familia = argumentos['familia'] or Taxonomia['familia']
local FamiliaAuth = argumentos['familia_autoridad'] or argumentos['familia_authority']-- or Taxonomia['']
local Subfamilia = argumentos['subfamilia'] or Taxonomia['subfamilia']
local SubfamiliaAuth = argumentos['subfamilia_autoridad'] or argumentos['subfamilia_authority']-- or Taxonomia['']
local Supertribus = argumentos['supertribu'] or argumentos['supertribus'] or Taxonomia['supertribu']
local SupertribusAuth = argumentos['supertribu_autoridad'] or argumentos['supertribus_authority']-- or Taxonomia['']
local Tribus = argumentos['tribu'] or argumentos['tribus'] or Taxonomia['tribu']
local TribusAuth = argumentos['tribu_autoridad'] or argumentos['tribus_authority']-- or Taxonomia['']
local Subtribus = argumentos['subtribu'] or argumentos['subtribus'] or Taxonomia['subtribu']
local SubtribusAuth = argumentos['subtribu_autoridad'] or argumentos['subtribus_authority']-- or Taxonomia['']
local Alliance = argumentos['alianza'] or argumentos['alliance'] or Taxonomia['alianza']
local AllianceAuth = argumentos['alianza_autoridad'] or argumentos['alliance_authority']-- or Taxonomia['']
local GenusUn = argumentos['género_sin_clasificar'] or argumentos['unranked_genus']-- or Taxonomia['']
local GenusUnAuth = argumentos['género_sin_clasificar_autoridad'] or argumentos['unranked_genus_authority']-- or Taxonomia['']
local Genus = argumentos['género'] or argumentos['genus'] or Taxonomia['género']
local GenusAuth = argumentos['género_autoridad'] or argumentos['genus_authority'] or Taxonomia['género_autoridad']
if GenusAuth then GenusAuth = '<br><small><span style="font-variant:small-caps;">' .. GenusAuth .. '<span></small>' end
local Subgenus = argumentos['subgénero'] or argumentos['subgenus'] or Taxonomia['subgénero']
local SubgenusAuth = argumentos['subgénero_autoridad'] or argumentos['subgenus_authority']-- or Taxonomia['']
local Sectio = argumentos['sección'] or argumentos['sectio'] or Taxonomia['sección']
local SectioAuth = argumentos['sección_autoridad'] or argumentos['sectio_authority']-- or Taxonomia['']
local Series = argumentos['serie'] or argumentos['series'] or Taxonomia['serie']
local SeriesAuth = argumentos['serie_autoridad'] or argumentos['series_authority']-- or Taxonomia['']
local SeriesGroup = argumentos['grupo_específico'] or argumentos['species_group'] or Taxonomia['grupo_específico']
local SeriesGroupAuth = argumentos['grupo_específico_autoridad'] or argumentos['species_group_authority']-- or Taxonomia['']
local SpeciesSubgroup = argumentos['subgrupo_específico'] or argumentos['species_subgroup'] or Taxonomia['subgrupo_específico']
local SpeciesSubgroupAuth = argumentos['subgrupo_específico_autoridad'] or argumentos['species_subgroup']-- or Taxonomia['']
local SpeciesComplex = argumentos['complejo_específico'] or argumentos['species_complex'] or Taxonomia['complejo_específico']
local SpeciesComplexAuth = argumentos['complejo_específico_autoridad'] or argumentos['species_complex_authority']-- or Taxonomia['']
local Species = argumentos['especie'] or argumentos['species'] or argumentos['binominal'] or Taxonomia['especie']
local SpeciesAuth = argumentos['especie_autoridad'] or argumentos['binominal_autoridad'] or argumentos['species_authority'] or argumentos['binominal_authority'] or Taxonomia['especie_autoridad']
if SpeciesAuth then SpeciesAuth = '<br><small><span style="font-variant:small-caps;">' .. SpeciesAuth .. '<span></small>' end
local Subspecies = argumentos['subespecie'] or argumentos['subspecies'] or argumentos['trinominal'] or Taxonomia['subespecie']
local SubspeciesAuth = argumentos['subespecie_autoridad'] or argumentos['trinominal_autoridad'] or argumentos['subspecies_authority'] or argumentos['trinominal_authority'] or Taxonomia['subespecie_autoridad']
if SubspeciesAuth then SubspeciesAuth = '<br><small><span style="font-variant:small-caps;">' .. SubspeciesAuth .. '<span></small>' end
local Diversity = argumentos['diversidad'] or argumentos['diversity']-- or Taxonomia['']
local SiversityLink = argumentos['diversidad_enlace'] or argumentos['diversity_link']-- or Taxonomia['']
local TypeSpecies = argumentos['especie_tipo'] or argumentos['type_species']-- or Taxonomia['']
local TypeSpeciesAuth = argumentos['especie_tipo_autoridad'] or argumentos['type_species_authority']-- or Taxonomia['']
local Binomial2 = argumentos['binomial2'] or argumentos['binomial2']-- or Taxonomia['']
local Binomial2Auth = argumentos['binomial2_autoridad'] or argumentos['binomial2_authority']-- or Taxonomia['']
local Trinomial2 = argumentos['trinomial2'] or argumentos['trinomial2']-- or Taxonomia['']
local Trinomial2Auth = argumentos['trinomial2_autoridad'] or argumentos['trinomial2_authority']-- or Taxonomia['']
local Binomial3 = argumentos['binomial3'] or argumentos['binomial3']-- or Taxonomia['']
local Binomial3Auth = argumentos['binomial3_autoridad'] or argumentos['binomial3_authority']-- or Taxonomia['']
local Trinomial3 = argumentos['trinomial3'] or argumentos['trinomial3']-- or Taxonomia['']
local Trinomial3Auth = argumentos['trinomial3_autoridad'] or argumentos['trinomial3_authority']-- or Taxonomia['']
local Trinomial4 = argumentos['trinomial4'] or argumentos['trinomial4']-- or Taxonomia['']
local Trinomial4Auth = argumentos['trinomial4_autoridad'] or argumentos['trinomial4']-- or Taxonomia['']
if GenusAuth and not Subgenus and not Species and not Subpecies then Genus = Genus .. GenusAuth end
if SpeciesAuth then Species = Species .. SpeciesAuth end
if SubspeciesAuth then Subspecies = Subspecies .. SubspeciesAuth end
local TaxonomiaInferior = obtenerTaxonomiaInferior(Taxonomia) or {}
local SubdivisionesTitulo = argumentos['subdivisión_ranks'] or argumentos['subdivision_ranks'] or TaxonomiaInferior[1]
local Subdivisiones = argumentos['subdivisiones'] or argumentos['subdivision'] or TaxonomiaInferior[2]
if Subdivisiones then
if string.len(Subdivisiones) > 200 then Subdivisiones = seccionDesplegable(frame, 'Vari' .. TaxonomiaInferior[3] .. 's', Subdivisiones) end
end
if not SubdivisionesTitulo or not Subdivisiones then SubdivisionesTitulo, Subdivisiones = '' end
local Synonyms = argumentos['sinónimos'] or argumentos['synonyms']
local RangoFosil = obtenerRangoFosil(frame)
-- Datos generales
local TaxonomiaTitulo
local GrupoVirus = obtenerGrupoVirus()
if GrupoVirus or esVirus(Regnum) then
TaxonomiaTitulo = '[[Virus#Clasificación|Clasificación de los virus]]'
else
TaxonomiaTitulo = '[[Taxonomía]]'
end
local EstadoConservacion = obtenerEstadoConservacion(frame)
--:: Datos morfológicos
local Raza = obtenerRaza() or {}
local NombreCientifico
local RazaTitulo
if Raza[1] and Raza[2] then
NombreCientifico = "''" .. Raza[1] .. "''"
RazaTitulo = "''" .. Raza[2] .. "''"
end
local Morfologia = argumentos['morfología']
local DimorfismoSexual = argumentos['dimorfismo sexual']
local Tamano = argumentos['tamaño']
local Dimensiones = argumentos['dimensiones']
local Largo = argumentos['largo']
local Alto = argumentos['alto']
local Peso = obtenerPeso()
local Pelaje = argumentos['pelaje']
local Plumaje = argumentos['plumaje']
local Cuernos = argumentos['cuernos']
local Cabeza = argumentos['cabeza']
local Boca = argumentos['boca']
local Ojos = argumentos['ojos']
local Orejas = argumentos['orejas']
local Cola = argumentos['cola'] or argumentos['rabo']
local Patas = argumentos['patas']
local Pico = argumentos['pico']
local Caracter = argumentos['carácter']
if not Dimensiones then
local Anchura
local Altura
local AN = elementoTabla(Entidad, 'claims', 'P2043', 1)
if AN then
Anchura = string.sub(elementoTabla(AN, 'mainsnak', 'datavalue', 'value', 'amount'), 2) .. getUnit(elementoTabla(AN, 'mainsnak', 'datavalue', 'value', 'unit'))
end
local AL = elementoTabla(Entidad, 'claims', 'P2048', 1)
if AL then
Altura = string.sub(elementoTabla(AL, 'mainsnak', 'datavalue', 'value', 'amount'), 2) .. getUnit(elementoTabla(AL, 'mainsnak', 'datavalue', 'value', 'unit'))
end
end
--:: Datos clínicos
local CausaDe = argumentos['causade'] or propiedad('P1542', {['lista'] = 'nobullet'}) or ''
local Huesped = argumentos['huésped'] or propiedad('P2975', {['lista'] = 'nobullet'}) or ''
local ProcesoTransision = argumentos['proceso_transmision']-- or propiedad('P060', {['lista'] = 'nobullet'}) or ''
-- Datos genéticos
local TamanoGenoma = argumentos['tamaño_genoma']
if not TamanoGenoma then
local TG = elementoTabla(Entidad, 'claims', 'P2143', 1)
if TG then
TamanoGenoma = formatoNumero(string.sub(elementoTabla(TG, 'mainsnak', 'datavalue', 'value', 'amount'), 2)) .. ' ' .. getUnit(elementoTabla(TG, 'mainsnak', 'datavalue', 'value', 'unit'))
end
end
--:: Datos geográficos y temporales
local Mapa = argumentos['mapa'] or argumentos['range_map']
local MapaAncho = argumentos['mapa_ancho'] or argumentos['range_map_width'] or '250px'
local Distribucion = argumentos['difusión'] or argumentos['distribución']
if not Distribucion then
Distribucion = ''
local DT = elementoTabla(Entidad, 'claims', 'P181', 1)
if DT then
DTp1 = elementoTabla(DT, 'qualifiers', 'P17', 1, 'datavalue', 'value', 'id')
DTp2 = elementoTabla(DT, 'qualifiers', 'P17', 2, 'datavalue', 'value', 'id')
DTp3 = elementoTabla(DT, 'qualifiers', 'P17', 3, 'datavalue', 'value', 'id')
DTp4 = elementoTabla(DT, 'qualifiers', 'P17', 4, 'datavalue', 'value', 'id')
DTp5 = elementoTabla(DT, 'qualifiers', 'P17', 5, 'datavalue', 'value', 'id')
DTp6 = elementoTabla(DT, 'qualifiers', 'P17', 6, 'datavalue', 'value', 'id')
DTp7 = elementoTabla(DT, 'qualifiers', 'P17', 7, 'datavalue', 'value', 'id')
DTp8 = elementoTabla(DT, 'qualifiers', 'P17', 8, 'datavalue', 'value', 'id')
DTp9 = elementoTabla(DT, 'qualifiers', 'P17', 9, 'datavalue', 'value', 'id')
DTc1 = elementoTabla(DT, 'qualifiers', 'P30', 1, 'datavalue', 'value', 'id')
DTc2 = elementoTabla(DT, 'qualifiers', 'P30', 2, 'datavalue', 'value', 'id')
DTc3 = elementoTabla(DT, 'qualifiers', 'P30', 3, 'datavalue', 'value', 'id')
DTc4 = elementoTabla(DT, 'qualifiers', 'P30', 4, 'datavalue', 'value', 'id')
DTc5 = elementoTabla(DT, 'qualifiers', 'P30', 5, 'datavalue', 'value', 'id')
DTc6 = elementoTabla(DT, 'qualifiers', 'P30', 6, 'datavalue', 'value', 'id')
DTc7 = elementoTabla(DT, 'qualifiers', 'P30', 7, 'datavalue', 'value', 'id')
DTc8 = elementoTabla(DT, 'qualifiers', 'P30', 8, 'datavalue', 'value', 'id')
DTc9 = elementoTabla(DT, 'qualifiers', 'P30', 9, 'datavalue', 'value', 'id')
end
-- No es la forma más elegante, pero funciona
if DTc1 then Distribucion = '[[' .. obtenerEtiquetaWikidata(DTc1) .. ']]' end
if DTc2 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTc2) .. ']]' end
if DTc3 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTc3) .. ']]' end
if DTc4 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTc4) .. ']]' end
if DTc5 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTc5) .. ']]' end
if DTc6 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTc6) .. ']]' end
if DTc7 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTc7) .. ']]' end
if DTc8 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTc8) .. ']]' end
if DTc9 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTc9) .. ']]' end
if DTp1 and DTC1 then Distribucion = '[[' .. obtenerEtiquetaWikidata(DTp1) end
if DTp1 and not DTC1 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp1) .. ']]' end
if DTp2 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp2) .. ']]' end
if DTp3 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp3) .. ']]' end
if DTp4 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp4) .. ']]' end
if DTp5 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp5) .. ']]' end
if DTp6 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp6) .. ']]' end
if DTp7 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp7) .. ']]' end
if DTp8 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp8) .. ']]' end
if DTp9 then Distribucion = Distribucion .. ', [[' .. obtenerEtiquetaWikidata(DTp9) .. ']]' end
end
local MapaLeyenda
local MapaPie
if Mapa then
MapaPie = argumentos['mapa_pie'] or argumentos['range_map_caption'] or ''
else
Mapa, MapaPie = obtenerImagenWikidata('P181')
end
if Mapa then
if MapaPie then
Mapa = '[[Archivo:' .. Mapa .. '|' .. MapaAncho .. '|alt=' .. MapaPie .. ']]'
else
Mapa = '[[Archivo:' .. Mapa .. '|' .. MapaAncho .. ']]'
end
end
if Mapa and MapaPie then
MapaPie = '<span style="display:inline;font-size:95%;">' .. MapaPie .. '</span>'
end
if Mapa then
MapaLeyenda = argumentos['mapa_leyenda'] or argumentos['range_map_legend']
if MapaLeyenda then
MapaLeyenda = '<div style="text-align:left; font-size:smaller">' .. MapaLeyenda .. '</div>'
end
end
local Mapa2 = argumentos['mapa2'] or argumentos['range_map2']
local Mapa2Ancho = argumentos['mapa2_ancho'] or argumentos['range_map2_width'] or '250px'
local Mapa2Leyenda
local Mapa2Pie
if Mapa2 then
Mapa2Pie = argumentos['mapa2_pie'] or argumentos['range_map2_caption'] or ''
if Mapa2:match("^Archivo:[%w%s%.%,_-]+$") then
Mapa2 = '[[' .. Mapa2 .. '|' .. Mapa2Ancho .. '|alt=' .. Mapa2Pie .. ']]'
elseif Mapa2:match("^[%w%s%.%,_-]+$") then
Mapa2 = '[[Archivo:' .. Mapa2 .. '|' .. Mapa2Ancho .. '|alt=' .. Mapa2Pie .. ']]'
end
end
if Mapa2 and Mapa2Pie then
Mapa2Pie = '<span style="display:inline;font-size:95%;">' .. Mapa2Pie .. '</span>'
end
if Mapa3 then
Mapa3Pie = argumentos['mapa3_pie'] or argumentos['range_map3_caption'] or ''
if Mapa3:match("^Archivo:[%w%s%.%,_-]+$") then
Mapa3 = '[[' .. Mapa3 .. '|' .. Mapa3Ancho .. '|alt=' .. Mapa3Pie .. ']]'
elseif Mapa3:match("^[%w%s%.%,_-]+$") then
Mapa3 = '[[Archivo:' .. Mapa3 .. '|' .. Mapa3Ancho .. '|alt=' .. Mapa3Pie .. ']]'
end
end
if Mapa3 and Mapa3Pie then
Mapa3Pie = '<span style="display:inline;font-size:95%;">' .. Mapa3Pie .. '</span>'
end
if Mapa4 then
Mapa4Pie = argumentos['mapa4_pie'] or argumentos['range_map4_caption'] or ''
if Mapa4:match("^Archivo:[%w%s%.%,_-]+$") then
Mapa4 = '[[' .. Mapa4 .. '|' .. Mapa4Ancho .. '|alt=' .. Mapa4Pie .. ']]'
elseif Mapa4:match("^[%w%s%.%,_-]+$") then
Mapa4 = '[[Archivo:' .. Mapa4 .. '|' .. Mapa4Ancho .. '|alt=' .. Mapa4Pie .. ']]'
end
end
if Mapa4 and Mapa4Pie then
Mapa4Pie = '<span style="display:inline;font-size:95%;">' .. Mapa4Pie .. '</span>'
end
local RegionDescubrimiento = argumentos['region']
local FechaDescubrimiento = argumentos['fecha']
-- :: Federaciones
local FederacionesLista = argumentos['federaciones']
if not FederacionesLista then
FederacionesLista = {}
-- Gatos
FederacionesLista['CFA'] = argumentos['CFA'] or argumentos['cfastd']
FederacionesLista['FIFe'] = argumentos['FIFE'] or argumentos['fifestd1'] or argumentos['fifeterm1'] or argumentos['fifestd2'] or argumentos['fifeterm2']
FederacionesLista['IPCBA'] = argumentos['IPCBA'] or argumentos['ipcbastd']
FederacionesLista['TICA'] = argumentos['TICA'] or argumentos['ticastd']
FederacionesLista['WCF'] = argumentos['WCF'] or argumentos['wcfstd']
FederacionesLista['FFE'] = argumentos['FFE'] or argumentos['ffestd']
FederacionesLista['AACE'] = argumentos['AACE'] or argumentos['aacestd']
FederacionesLista['ACF'] = argumentos['ACF'] or argumentos['acfstd']
FederacionesLista['ACFA'] = argumentos['ACFA'] or argumentos['acfastd1'] or argumentos['acfaterm1'] or argumentos['acfastd2'] or argumentos['acfaterm2']
FederacionesLista['CCA'] = argumentos['CCA'] or argumentos['ccastd']
FederacionesLista['CCCofA'] = argumentos['CCCOFA'] or argumentos['cccastd']
FederacionesLista['CFF'] = argumentos['CFF'] or argumentos['cffstd']
FederacionesLista['GCCF'] = argumentos['GCCF'] or argumentos['gccfstd']
FederacionesLista['LOOF'] = argumentos['LOOF'] or argumentos['loofstd']
FederacionesLista['NZCF'] = argumentos['NZCF'] or argumentos['nzcfstd']
FederacionesLista['SACC'] = argumentos['SACC'] or argumentos['saccstd']
-- Perros
FederacionesLista['ACA'] = argumentos['ACA'] --American Canine Association
FederacionesLista['ADBA'] = argumentos['ADBA'] --American Dog Breeders Association
FederacionesLista['AKC'] = argumentos['AKC'] --American Kennel Club
FederacionesLista['APR'] = argumentos['APR'] --American Purebred Registry
FederacionesLista['APRI'] = argumentos['APRI'] --American Pet Registry
FederacionesLista['CKC'] = argumentos['CKC'] --Continental Kennel Club
FederacionesLista['CAKC'] = argumentos['CAKC'] --Canadian Kennel Club
FederacionesLista['DRA'] = argumentos['DRA'] --Dog Registry of America
FederacionesLista['IAR'] = argumentos['IAR'] --International Animals Registry
FederacionesLista['NAMBR'] = argumentos['NAMBR'] --North American Mixed Breed Registry
FederacionesLista['NAPDR'] = argumentos['NAPDR'] --North American Purebred Dog Registry
FederacionesLista['UABR'] = argumentos['UABR'] --United All Breed Registry
FederacionesLista['UKC'] = argumentos['UKC'] --United Kennel Club
FederacionesLista['USKC'] = argumentos['uskc'] --United States Kennel Club
FederacionesLista['WKC'] = argumentos['USKC'] --World Kennel Club
FederacionesLista['WWKC'] = argumentos['WWKC'] --World Wide Kennel Club
FederacionesLista['ABBBA'] = argumentos['ABBBA'] --Alapaha Blue Blood Bulldog Association
FederacionesLista['ABCA'] = argumentos['ABCA'] --American Border Collie Association
FederacionesLista['ABA'] = argumentos['ABA'] --American Bulldog Association
FederacionesLista['ABKC'] = argumentos['ABKC'] --American Bully Kennel Club
FederacionesLista['ADF'] = argumentos['ADF'] --American Dog Federation
FederacionesLista['AFDR'] = argumentos['AFDR'] --American Field Dog Registry
FederacionesLista['APBR'] = argumentos['APBR'] --American Pitbull Registry
FederacionesLista['ARHA'] = argumentos['ARHA'] --American Rabbit Hound Association
FederacionesLista['ARBA'] = argumentos['ARBA'] --American Rare Breed Association
FederacionesLista['ASDR'] = argumentos['ASDR'] --American Stock Dog Registry
FederacionesLista['ANSCA'] = argumentos['ANSCA'] --Anatolian Shepherd Club of America, Inc
FederacionesLista['AKCUPI'] = argumentos['AKCUPI'] --Asian Kennel Club Union of the Philippines
FederacionesLista['ASCA'] = argumentos['ASCA'] --Australian Shepherd Club of America
FederacionesLista['ALAA'] = argumentos['ALAA'] --Australian Labradoodle Association of America
FederacionesLista['ANKC'] = argumentos['ANKC'] --Australian National Kennel Council
FederacionesLista['BCSA'] = argumentos['BCSA'] --Border Collie Society of America
FederacionesLista['BSS'] = argumentos['BSS'] --Boykin Spaniel Society
FederacionesLista['EJRTCA'] = argumentos['EJRTCA'] --English Jack Russell Terrier Club Alliance, Inc
FederacionesLista['FCI'] = argumentos['FCI'] --Federation Cynological International
FederacionesLista['FDSB'] = argumentos['FDSB'] --Field Dog Stud Book
FederacionesLista['IBC'] = argumentos['IBC'] --Internationaler Biewer Yorkshire Terrier Club
FederacionesLista['ICCF'] = argumentos['ICCF'] --International Cane Corso Federation, Inc.
FederacionesLista['IOEBA'] = argumentos['IOEBA'] --International Olde English Bulldogge Association
FederacionesLista['ISDS'] = argumentos['ISDS'] --International Sheepdog Society
FederacionesLista['JRTCA'] = argumentos['JRTCA'] --Jack Russell Terrier Club of America
FederacionesLista['JKC'] = argumentos['JKC'] --Japan Kennel Club
FederacionesLista['MASCA'] = argumentos['MASCA'] --Miniature Australian Shepherd Club of America
FederacionesLista['NGA'] = argumentos['NGA'] --National Greyhound Association
FederacionesLista['NKC'] = argumentos['NKC'] --National Kennel Club
FederacionesLista['NRTA'] = argumentos['NRTA'] --National Rat Terrier Registry Association
FederacionesLista['NSDR'] = argumentos['NSDR'] --National Stock Dog Registry
FederacionesLista['NASS'] = argumentos['NASS'] --North American Sheepdog Society
FederacionesLista['TKC'] = argumentos['TKC'] --The Kennel Club (TKC) United Kingdom
FederacionesLista['UCA'] = argumentos['UCA'] --United Canine Association
FederacionesLista['UKC'] = argumentos['UKC'] --United Kennel Club
FederacionesLista['UPPCC'] = argumentos['UPPCC'] --United Perro de Presa Canario Club
end
local Federaciones = ''
for k,v in pairs(FederacionesLista) do
if v then Federaciones = Federaciones .. '[' .. v .. ' ' .. k .. '] ' end
end
if not Federaciones == '' then Federaciones = '<div style="display: -webkit-flex;display: -moz-flexbox;display: -ms-flexbox;display: flex;-webkit-justify-content: space-between;-moz-justify-content: space-between;-ms-justify-content: space-between;justify-content: space-between;">' .. Federaciones .. '</div>' end
--:: Otros
local Subtitulo = RangoFosil
local Utilizacion = argumentos['utilización']
local Notas = argumentos['notas'] or argumentos['notes']
local NombreComun = argumentos['nombre_común'] or propiedad('P1843', {['lista'] = 'nobullet'}) or ''
if string.len(NombreComun) > 200 then
NombreComun = seccionDesplegable(frame, '[[Varios]]', NombreComun)
end
-- :: Datos básicos
local Titulo = argumentos['name'] or argumentos['nombre'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})
if Titulo and not Raza[2] then
Titulo = '<div style="position:relative">' .. Titulo .. '<div style="position:absolute;top:0px;right:.1em;bottom:.1em">[[Archivo:Symbol question.svg|16px|link=Ayuda:Cómo leer una ficha de taxón|alt=Symbol question.svg]]</div></div>'
end
--:: Formatos
local Color = argumentos['color']
local ColorTituloReino = argumentos['reino'] or argumentos['regnum'] or Taxonomia['reino']
local ColorTitulo = obtenerColorTitulo(ColorTituloReino, Color)
local EstiloTitulo = argumentos['estilo_titulo'] or ''
local EstiloSeccion = argumentos['estilo_seccion'] or ''
local EstiloEtiqueta = argumentos['estilo_etiquetas'] or ''
if ColorTitulo then
EstiloTitulo = EstiloTitulo .. 'background-color:' .. ColorTitulo
EstiloSeccion = EstiloSeccion .. 'background-color:' .. ColorTitulo
EstiloEtiqueta = EstiloEtiqueta .. 'width:100px;background-color:' .. ColorTitulo
end
-- :: Propiedades
local Imagen = argumentos['imagen'] or argumentos['image']
local Imagen2 = argumentos['imagen2'] or argumentos['image2']
local TamanoImagen = argumentos['image_width'] or argumentos['tamaño imagen'] or argumentos['tamaño_imagen'] or '250px'
local Pie
local Pie2
-- Primera imagen
if Imagen then
Pie = argumentos['pie'] or argumentos['image_caption'] or ''
else
Imagen, Pie = obtenerImagenWikidata('P18')
end
if Pie then
Pie = '<span style="display:inline;font-size:95%;">' .. Pie .. '</span>'
end
if Imagen2 == 'no' then Imagen2 = nil end
-- Segunda imagen
if Imagen2 then
Pie2 = argumentos['pie2'] or argumentos['image2_caption'] or ''
end
if Pie2 then
Pie2 = '<span style="display:inline;font-size:95%;">' .. Pie2 .. '</span>'
end
-- :: La ficha
local TablaFicha
if Raza[1] then
TablaFicha = {
entidad = argumentos.id,
titulo = Titulo,
subtitulo = RazaTitulo,
estilotitulo = EstiloTitulo,
estilosubtitulo = EstiloTitulo,
estiloseccion = EstiloSeccion,
estiloetiqueta = EstiloEtiqueta,
imagen = Imagen,
["tamañoimagen"] = TamanoImagen,
imagen2 = Imagen2,
["tamañoimagen2"] = TamanoImagen,
pie = Pie,
pie2 = Pie2,
estilopie = "font-size:88%",
estilopie2 = "font-size:88%",
{tipo="sección",
titulo = "Características",
--estiloseccion = EstiloSeccion,
{"[[Nomenclatura binominal]]", NombreCientifico},
{"Otros nombres", NombreComun},
{"Región de origen", RegionDescubrimiento},
{"Primeros registros", FechaDescubrimiento},
{"[[Morfología (biología)|Morfología]]", Morfologia},
{"[[Dimorfismo sexual]]", DimorfismoSexual},
{"Tamaño", Tamano},
{"Dimensiones", Dimensiones},
{"Anchura", Anchura},
{"Altura", Altura},
{"[[Peso]]", Peso},
{"[[Pelaje]]", Pelaje},
{"[[Plumaje]]", Plumaje},
{"[[Cuernos]]'", Cuernos},
{"[[Cabeza]]", Cabeza},
{"[[Boca]]", Boca},
{"[[Ojos]]", Ojos},
{"[[Pico]]", Pico},
{"[[Orejas]]", Orejas},
{"[[Cola]]", Cola},
{"[[Patas]]", Patas},
{"[[Pico (zoología)|Pico]]", Pico},
{"[[Carácter biológico|Carácter]]", Caracter},
{"Utilización", Utilizacion},
},
{tipo="sección",
titulo = "[[Área biogeográfica|Difusión]]",
{"", Distribucion},
{"", Mapa},
{"", MapaPie},
{"", MapaLeyenda},
},
{tipo="sección",
--titulo = "[[Registro de razas|Federaciones]]",
titulo = "Federaciones",
-- Gatos
{"", Federaciones},
{"", OtrasFederaciones},
},
{tipo="sección",
titulo = "Notas",
{"", Notas},
},
}
else
TablaFicha = {
entidad = argumentos.id,
titulo = Titulo,
subtitulo = Subtitulo,
estilotitulo = EstiloTitulo,
estilosubtitulo = EstiloTitulo,
estiloseccion = EstiloSeccion,
estiloetiqueta = EstiloEtiqueta,
imagen = Imagen,
["tamañoimagen"] = TamanoImagen,
imagen2 = Imagen2,
["tamañoimagen2"] = TamanoImagen,
pie = Pie,
pie2 = Pie2,
estilopie = "font-size:88%",
estilopie2 = "font-size:88%",
{tipo="sección",
titulo = "Estado de conservación",
{"", EstadoConservacion},
},
{tipo="sección",
titulo = TaxonomiaTitulo,
{"[[Dominio (biología)|Dominio]]", Domain},
{"Superreino", Superregnum},
{"[[Reino (biología)|Reino]]", Regnum},
{"Subreino", Subregnum},
{"Superfilo", Superphylum},
{"[[División (biología)|División]]", Divisio},
{"[[Filo]]", Phylum},
{"Subdivisión", Subdivisio},
{"Subfilo", Subphylum},
{"Infrafilo", Infraphylum},
{"Microfilo", Microphylum},
{"Nanofilo", Nanophylum},
{"Superclase", Superclassis},
{"[[Clase (biología)|Clase]]", Classis},
{"Subclase", Subclassis},
{"Infraclase", Infraclassis},
{"Magnoorden", Magnordo},
{"Superorden", Superordo},
{"Granorden", Granordo},
{"[[Orden (biología)|Orden]]", Ordo},
{"Suborden", Subordo},
{"Infraorden", Infraordo},
{"Pavorden", Pavordo},
{"Zoodivisión", Zoodovisio},
{"Zoosección", Zoosectio},
{"Zoosubsección", Zoosubsectio},
{"Superfamilia", Superfamilia},
{"[[Familia (biología)|Familia]]", Familia},
{"Subfamilia", Subfamilia},
{"Supertribu", Supertribus},
{"[[Tribu (biología)|Tribu]]", Tribus},
{"Subtribus", Subtribus},
{"Alianza", Alliance},
{"[[Género (biología)|Género]]", Genus},
{"Subgénero", Subgenus},
{"Sección", Sectio},
{"Serie", Series},
{"Grupo específico", SeriesGroup},
{"Subgrupo específico", SpeciesSubgroup},
{"Complejo específico", SpeciesComplex},
{"[[Especie]]", Species},
{"Subespecie", Subspecies},
},
{tipo="sección",
titulo = SubdivisionesTitulo,
estilodatos = "text-align:left;",
{"", Subdivisiones},
},
{tipo="sección",
titulo = "[[Genética|Datos genéticos]]",
estilodatos = "text-align:left;",
{"[[Clasificación_de_Baltimore|Grupo]]", GrupoVirus},
{"[[Genoma#Tamaño_del_genoma|Tamaño del genoma]]", TamanoGenoma},
},
{tipo="sección",
titulo = "[[Signo clínico|Datos clínicos]]",
estilodatos = "text-align:left;",
{"Causa de", CausaDe},
{"[[Huésped (biología)|Huéspedes]]", Huesped},
},
{tipo="sección",
titulo = "[[Sinonimia (biología)|Sinonimia]]",
estilodatos = "text-align:left;",
{"", Synonyms},
},
{tipo="sección",
titulo = "[[Área biogeográfica|Distribución]]",
{"",Distribucion},
{"", Mapa},
{"", MapaPie},
{"", MapaLeyenda},
{"",Binomial2},
{"",Binomial2Autoridad},
{"",Trinomial2},
{"",Trinomial2Autoridad},
{"", Mapa2},
{"", Mapa2Pie},
{"", Mapa2Leyenda},
{"",Binomial3},
{"",Binomial3Autoridad},
{"",Trinomial3},
{"",Trinomial3Autoridad},
{"", Mapa3},
{"", Mapa3Pie},
{"", Mapa3Leyenda},
{"",Binomial4},
{"",Binomial4Autoridad},
{"",Trinomial4},
{"",Trinomial4Autoridad},
{"", Mapa4},
{"", Mapa4Pie},
{"", Mapa4Leyenda},
},
{tipo="sección",
titulo = "Notas",
{"", Notas},
},
}
end
return ModuloFicha.infobox(TablaFicha)
end
function obtenerEtiquetaWikidata(entidad)
if entidad then
entidad = mw.wikibase.getEntity(entidad)
else
entidad = Entidad
end
if entidad and entidad.labels and entidad.labels.es then
return entidad.labels.es.value
end
end
function obtenerImagenWikidata(propiedad)
local imagen, valorImagen, piesDeImagen, k, pieDeImagen
if not Entidad then
return
end
-- Obtener la primera imagen en Wikidata de la persona
local imagen = elementoTabla(Entidad, 'claims', propiedad,1)
if not imagen then
return
end
valorImagen = elementoTabla(imagen, 'mainsnak','datavalue','value')
piesDeImagen = elementoTabla(imagen, 'qualifiers','P2096')
-- Encontrar el pie en español
if piesDeImagen then
for k,pieDeImagen in pairs(piesDeImagen) do
if pieDeImagen.datavalue.value.language == 'es' then
return valorImagen, pieDeImagen.datavalue.value.text
end
end
end
-- Si no hay pie de imagen en español comprueba si hay fecha especificada para la imagen
piesDeImagen = elementoTabla(imagen, 'qualifiers', 'P585')
if piesDeImagen and piesDeImagen[1] then
return valorImagen, nombre .. ' en ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(piesDeImagen[1].datavalue.value, {['formatoFecha']='año',['enlace']='no'})
end
-- Sin pie de imagen en español
return valorImagen
end
function propiedad(idPropiedad, opciones, entidad)
if not entidad then entidad = Entidad end
if entidad and entidad.claims and entidad.claims[idPropiedad] then
if not opciones then
opciones = {['linkback']='sí'}
end
opciones.entityId = entidad.id
opciones.propiedad = idPropiedad
valorPropiedad = ModuloWikidata.getPropiedad(opciones,entidad.claims[idPropiedad])
return valorPropiedad
end
end
function esUnValor(entidad, idPropiedad, idaBuscar)
if not entidad or not idPropiedad then
return false
end
local declaracion = elementoTabla(entidad, 'claims', idPropiedad)
local idBuscado
if not declaracion then
return false
end
for k,v in pairs(declaracion) do
idBuscado = elementoTabla(v,'mainsnak','datavalue','value','id')
if idBuscado == idaBuscar then
return true
end
end
return false
end
function listaDesplegable(titulo, lista, frame)
if not lista then
return
end
return frame:preprocess('{{Lista desplegable|align=left|título='..titulo .. '|1='..lista..'}}')
end
function seccionDesplegable(frame, titulo, lista)
if not lista then
return
end
return frame:preprocess('{{Sección desplegable|align=left|título=' .. titulo .. '|datos='.. lista .. '}}')
end
function capitalizar(cad)
return string.upper(string.sub(cad,1,1)) .. string.sub(cad,2)
end
function obtenerEnumCalculado(entidad)
local valc
for k,v in ipairs(clasificacionValores) do
valc = esUnValor(entidad, v[0], v[1])
if valc then
return v[2]
end
end
end
function obtenerValor(entidad, idPropiedad, idValor)
local valor = {}
if not entidad or not idPropiedad or not idValor then
return valor
end
local declaracion = elementoTabla(entidad, 'claims', idPropiedad)
if declaracion then
for k, v in pairs(declaracion) do
local propBuscado = elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'id')
if propBuscado == idValor then
table.insert(valor, v)
end
end
end
return valor
end
-- Función para comprobar si una cadena coincide con algún valor de una tabla
function obtenerCoincidencia(items,str)
for _,v in pairs(items) do
if v == str then
return true
end
end
end
-- Función para obtener el estado de conservación y mostrar la gráfica IUCN (WIP)
function obtenerEstadoConservacion(frame)
-- Declaraciones
local NombreTaxon = argumentos['nombre'] or argumentos['name'] or propiedad('P225', {['enlace'] = 'no'})
local EstadoConservacionID = argumentos['estado'] or argumentos['status']
local EstadoConsSistema = argumentos['estado_sistema'] or argumentos['status_system']
local EstadoConsText = argumentos['estado_texto'] or argumentos['status_text']
local EstadoConsRef = argumentos['estado_ref'] or argumentos['status_ref']
local EstadoConsRefURL
local EstadoConsRefFecha
local EstadoConsDesc
local EstadoConsCat
-- Identificadores de estado de conservación posibles
local EstadoConservacionCods = mw.loadData('Módulo:Ficha de taxón/EstadoConservacionCods')
if not EstadoConservacionID then
-- Si es un fósil
if InstanciaDeID == 'Q23038290' then
EstadoConservacionID = 'FOSIL'
-- Si es un taxón actual
else
local EstadoConservacion = elementoTabla(Entidad, 'claims', 'P141', 1)
if EstadoConservacion then
EstadoConservacionID = elementoTabla(EstadoConservacion, 'mainsnak', 'datavalue', 'value', 'id')
else
return false
end
local EstadoConsRefFecha= elementoTabla(EstadoConservacion, 'references', 1, 'snaks', 'P813', 1, 'datavalue', 'value')
if EstadoConsRefFecha then
EstadoConsRefFecha = require('Módulo:Wikidata/Fecha').FormateaFechaHora(EstadoConsRefFecha, {['formatoFecha']='año', ['enlace']='no'})
EstadoConsRefFecha = tostring(EstadoConsRefFecha)
else
EstadoConsRefFecha = ''
end
local EstadoConsRefVerID = elementoTabla(EstadoConservacion, 'references', 1, 'snaks', 'P248', 1, 'datavalue', 'value')
local EstadoConsRefVer = ''
local EstadoConsRefAno = ''
if EstadoConsRefVerID then
EstadoConsRefVerID = obtenerEtiquetaWikidata(EstadoConsRefVerID.id)
EstadoConsRefVer = EstadoConsRefVerID:sub(-6,-1)
EstadoConsRefAno = EstadoConsRefVerID:sub(-6,-3)
end
if not Asesores then
Asesores = ''
end
EstadoConsRef = frame:preprocess('<ref>{{IUCN|título= ' .. NombreTaxon .. '|asesores=' .. Asesores .. '|año=' .. EstadoConsRefAno .. '|edición=|' .. EstadoConsRefVer .. '|consultado=' .. EstadoConsRefFecha .. '}}</ref>')
if EstadoConsRefAno < '2001' and not EstadoConsRefAno == '' then
EstadoConsSistema = 'uicn2.3'
else
EstadoConsSistema = 'uicn3.1'
end
end
end
-- :: Consultas
-- No amenazado
if EstadoConservacionCods[EstadoConservacionID] == 'SE' then
EstadoConsDesc = 'No amenazado'
EstadoConsCat = ''
end
if EstadoConservacionCods[EstadoConservacionID] == 'DOM' then
EstadoConsDesc = '[[Domesticación|Domesticado]]'
EstadoConsCat = '\n[[Categoría:Animales domesticados]]'
end
-- Datos insufiecientes
if EstadoConservacionCods[EstadoConservacionID] == 'DD' then
if EstadoConsText then
EstadoConsDesc = 'Datos insuficientes <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status none DD.svg|200px|Datos insuficientes (DD)]]<br />[[Especie con datos insuficientes|Datos insuficientes]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status none DD.svg|200px|Datos insuficientes (DD)]]<br />[[Especie con datos insuficientes|Datos insuficientes]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]]))</span>'
end
EstadoConsCat = ''
end
-- Especie no evaluada
if EstadoConservacionCods[EstadoConservacionID] == 'NE' then
EstadoConsDesc = 'No evaluado'
if EstadoConsText then
EstadoConsDesc = EstadoConsDesc .. ' <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
end
end
-- No reconocido
if EstadoConservacionCods[EstadoConservacionID] == 'NR' then
EstadoConsDesc = 'No reconocido'
if EstadoConsText then
EstadoConsDesc = EstadoConsDesc .. ' <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
end
end
-- Riesgo bajo
if EstadoConservacionCods[EstadoConservacionID] == 'LR' then
EstadoConsDesc = 'Riesgo bajo'
if EstadoConsText then
EstadoConsDesc = EstadoConsDesc .. ' <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
end
end
-- Preocupación menor
if EstadoConservacionCods[EstadoConservacionID] == 'LC' then
if EstadoConsText then
EstadoConsDesc = '[[Especie bajo preocupación menor|Preocupación menor]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status iucn2.3 LC es.svg|200px|Preocupación menor (LC)]]<br />[[Especie bajo preocupación menor|Preocupación menor]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status iucn3.1 LC es.svg|200px|Preocupación menor (LC)]]<br />[[Especie bajo preocupación menor|Preocupación menor]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]])</span>'
end
EstadoConsCat = ''
end
-- Preocupación menor (LR/LC)
if EstadoConservacionCods[EstadoConservacionID] == 'LRLC' then
if EstadoConsText then
EstadoConsDesc = '[[Especie bajo preocupación menor|Preocupación menor]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status iucn2.3 LC es.svg|200px|Preocupación menor (LC)]]<br />[[Especie bajo preocupación menor|Preocupación menor]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status iucn3.1 LC es.svg|200px|Preocupación menor (LC)]]<br />[[Especie bajo preocupación menor|Preocupación menor]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]])</span>'
end
EstadoConsCat = ''
end
-- Casi amenazada
if EstadoConservacionCods[EstadoConservacionID] == 'NT' then
if EstadoConsText then
EstadoConsDesc = '[[Especie casi amenazada|Casi amenazado]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status iucn2.3 NT es.svg|200px|Casi amenazado (NT)]]<br />[[Especie casi amenazada|Casi amenazado]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status iucn3.1 NT es.svg|200px|Casi amenazado (NT)]]<br />[[Especie casi amenazada|Casi amenazado]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]])</span>'
end
EstadoConsCat = ''
end
-- Casi amenazada (LR/NT)
if EstadoConservacionCods[EstadoConservacionID] == 'LRNT' then
if EstadoConsText then
EstadoConsDesc = '[[Especie casi amenazada|Casi amenazado]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
else
EstadoConsDesc = '[[Archivo:Status iucn2.3 NT es.svg|200px|Casi amenazado (LR/NT)]]<br />[[Especie casi amenazada|Casi amenazado]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
end
EstadoConsCat = ''
end
-- Dependiente de conservación
if EstadoConservacionCods[EstadoConservacionID] == 'LRCD' then
if EstadoConsText then
EstadoConsDesc = 'Dependiente de conservación <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
else
EstadoConsDesc = '[[Archivo:Status iucn2.3 CD es.svg|200px|Dependiente de conservación (CD)]]<br />Dependiente de conservación <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
end
EstadoConsCat = ''
end
-- Vulnerable
if EstadoConservacionCods[EstadoConservacionID] == 'VU' then
if EstadoConsText then
EstadoConsDesc = '[[Especie vulnerable|Vulnerable]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status iucn2.3 VU es.svg|200px|Vulnerable (VU)]]<br />[[Especie vulnerable|Vulnerable]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status iucn3.1 VU es.svg|200px|Vulnerable (VU)]]<br />[[Especie vulnerable|Vulnerable]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]])</span>'
end
EstadoConsCat = ''
end
-- En peligro de extinción
if EstadoConservacionCods[EstadoConservacionID] == 'EN' then
if EstadoConsText then
EstadoConsDesc = '[[Especie en peligro de extinción|En peligro]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status iucn2.3 EN es.svg|200px|En peligro (EN)]]<br />[[Especie en peligro de extinción|En peligro]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status iucn3.1 EN es.svg|200px|En peligro (EN)]]<br />[[Especie en peligro de extinción|En peligro]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]])</span>'
end
EstadoConsCat = ''
end
-- En peligro crítico
if EstadoConservacionCods[EstadoConservacionID] == 'CR' then
if EstadoConsText then
EstadoConsDesc = '[[Especie en peligro crítico de extinción|En peligro crítico]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status iucn2.3 CR es.svg|200px|En peligro crítico (CR)]]<br />[[Especie en peligro crítico de extinción|En peligro crítico]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status iucn3.1 CR es.svg|200px|En peligro crítico (CR)]]<br />[[Especie en peligro crítico de extinción|En peligro crítico]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]])</span>'
end
EstadoConsCat = ''
end
-- Posiblemente extinto en libertad
if EstadoConservacionCods[EstadoConservacionID] == 'PEW' then
if EstadoConsText then
EstadoConsDesc = 'Posiblemente [[extinción|extinto]] en libertad <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
else
EstadoConsDesc = '[[Archivo:Status none PEW.svg|200px|En peligro crítico, posiblemente extinto en estado salvaje (PEW)]]<br />Posiblemente [[extinción|extinto]] en libertad <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN]])</span>'
end
EstadoConsCat = ''
end
-- Extinto en libertad
if EstadoConservacionCods[EstadoConservacionID] == 'EW' then
if EstadoConsText then
EstadoConsDesc = '[[Especie extinta en estado silvestre|Extinto en libertad]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status iucn2.3 EW es.svg|200px|Extinto en estado silvestre (EW)]]<br />[[Especie extinta en estado silvestre|Extinto en libertad]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status iucn3.1 EW es.svg|200px|Extinto en estado silvestre (EW)]]<br />[[Especie extinta en estado silvestre|Extinto en libertad]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]])</span>'
end
EstadoConsCat = ''
end
-- Posiblemente extinto
if EstadoConservacionCods[EstadoConservacionID] == 'PE' then
if EstadoConsText then
EstadoConsDesc = 'Posiblemente [[extinción|extinto]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
else
EstadoConsDesc = '[[Archivo:Status none PE.svg|200px|En peligro crítico, posiblemente extinto (PE)]]<br />Posiblemente [[extinción|extinto]] <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN]])</span>'
end
EstadoConsCat = ''
end
-- Extinto
if EstadoConservacionCods[EstadoConservacionID] == 'EX' then
if EstadoConsText then
EstadoConsDesc = '[[Extinción|Extinto]] <span style="font-size:smaller">( ' .. EstadoConsText .. ')</span>'
elseif EstadoConservacionCods[EstadoConservacionID] == 'UICN23' then
EstadoConsDesc = '[[Archivo:Status iucn2.3 EX es.svg|200px|Extinto (EX)]]<br />[[Extinción|Extinto]] {{#if:{{{extinct|}}}|desde {{{extinct}}}}} <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 2.3]])</span>'
else--if EstadoConservacionCods[EstadoConservacionID] == 'UICN31'], EstadoConsSistema) then
EstadoConsDesc = '[[Archivo:Status iucn3.1 EX es.svg|200px|Extinto (EX)]]<br />[[Extinción|Extinto]] {{#if:{{{extinct|}}}|desde {{{extinct}}}}} <span style="font-size:smaller; font-weight:bold">([[Unión Internacional para la Conservación de la Naturaleza|UICN 3.1]])</span>'
end
EstadoConsCat = ''
end
-- Extinto en época prehistórica
if EstadoConservacionCods[EstadoConservacionID] == 'PRE' then
EstadoConsDesc = '[[Extinción|Extinto]] en época prehistórica'
EstadoConsCat = '[[Categoría:Especies extintas en la prehistoria]]'
end
-- taxón paleontológico (fósil)
if EstadoConservacionCods[EstadoConservacionID] == 'FOSIL' then
EstadoConsDesc = '[[Extinción|Extinto]] ([[fósil]])'
EstadoConsCat = '\n[[Categoría:Fósiles]]'
end
if EstadoConsDesc then
EstadoConservacion = EstadoConsDesc
if EstadoConsRef then EstadoConservacion = EstadoConservacion .. EstadoConsRef end
if EstadoConsCat then EstadoConservacion = EstadoConservacion .. EstadoConsCat end
end
return EstadoConservacion
end
-- Función para obtener el grupo virus
function obtenerGrupoVirus()
local Grupos = mw.loadData('Módulo:Ficha de taxón/GruposVirus')
local GrupoVirus = argumentos['virus_group'] or argumentos['grupo_virus'] or elementoTabla(Entidad, 'claims', 'P4628', 1,'mainsnak','datavalue','value','id')
if not GrupoVirus then return false end
if Grupos[GrupoVirus] then return Grupos[GrupoVirus] end
end
-- Función para comprobar si una cadena cumple con lo que es una URL, y devolver
-- el enlace wiki; de lo contrario, devolver el enlace en si (WIP)
function URLaEnlace(url, sufijo)
-- Sería deseable validar si es URL
if not url then return false end
if type(sufijo) == 'string' then
return '[' .. url .. ' ' .. sufijo .. ']'
else
return '[' .. url .. ']'
end
end
-- :: Funciones para consultar por un cierto tipo de taxón
-- Función para comprobar si es del reino animalia (WIP)
function esAnimalia(Regnum)
local list = {"[[Animal]]", "[[animal]]","[[animal]]ia", "''[[Animalia]]''", "[[Animalia]]", "[[animalia]]", "Animalia" , "animalia","<b>animalia</b>","'''animalia'''"}
return obtenerCoincidencia(list,Regnum)
end
-- Función para comprobar si es del reino plantae (WIP)
function esPlantae(Regnum)
local list = {"Plantae", "[[archaeplastida]]", "''[[Plantae]]''", "[[Plantae]]", "[[plantae]]","Plantae", "plantae","<b>plantae</b>","'''plantae'''"}
return obtenerCoincidencia(list,Regnum)
end
-- Función para comprobar si es del reino fungi (WIP)
function esFungi(Regnum)
local list = {"Fungi", "''[[Fungi]]''", "[[fungi]]", "fungi","<b>fungi</b>","'''fungi'''"}
return obtenerCoincidencia(list,Regnum)
end
-- Función para comprobar si es del reino bacteria (WIP)
function esBacteria(Regnum)
local list = {"Bacteria", "bacteria", "''[[Bacteria]]''", "[[Bacteria]]", "[[bacteria]]", "<b>bacteria</b>","'''bacteria'''"}
return obtenerCoincidencia(list,Regnum)
end
-- Función para comprobar si es del reino protista (WIP)
function esProtista(Regnum)
local list = {"Protista","protista", "''[[Protista]]''", "[[Protista]]", "[[protista]]", "<b>protista</b>","'''protista'''"}
return obtenerCoincidencia(list,Regnum)
end
-- Función para comprobar si es del reino archea (WIP)
function esArchaea(Regnum)
local list = {"Archaea", "archaea", "''[[Archaea]]''", "[[Archaea]]", "[[archaea]]", "<b>archaea</b>","'''archaea'''"}
return obtenerCoincidencia(list,Regnum)
end
-- Función para comprobar si es del reino incertae sedis (WIP)
function esIncertaeSedis(Regnum)
local list = {"Incertae sedis","incertae sedis", "''[[Incertae sedis]]''", "[[Incertae sedis]]", "[[incertae sedis]]"}
return obtenerCoincidencia(list,Regnum)
end
-- Función para comprobar si es del reino virus (WIP)
function esVirus(Regnum)
local list = {"Virus", "virus", "''[[Virus]]''", "[[Virus]]", "[[virus]]", "<b>virus</b>","i","ii","iii","iv","v","vi","vii","viii","'''[[riboviria]]'''","'''''riboviria'''''"}
return obtenerCoincidencia(list,Regnum)
end
-- Función para obtener el color del título en base al reino (WIP)
function obtenerColorTitulo(Regnum, Color)
if Match(Color, '^#[0-9a-fA-F]+$', 4) or Match(Color, '^#[0-9a-fA-F]+$', 7) then
return Color
end
if obtenerRaza() then
return '#FEE16A'
end
local Colores = mw.loadData('Módulo:Ficha_de_taxón/colores')
if Colores[Regnum] then return Colores[Regnum] end
return '#FDDBAF'
end
-- Función para obtener la raza
function obtenerRaza()
local Raza = argumentos['tipo'] or argumentos['raza']
if not Raza then
GV = elementoTabla(Entidad, 'claims', 'P31', 1)
if GV then Raza = elementoTabla(GV,'mainsnak','datavalue','value','id') end
end
if not Raza then return false end
local Sexo = propiedad('P21', {['enlace'] = 'no'})
local Razas = mw.loadData('Módulo:Ficha de taxón/Razas')
if Razas[Raza] == 'gato' then return {'Felis silvestris catus', 'raza de [[gato]]'} end
if Razas[Raza] == 'perro' then return {'Canis lupus familiaris', '[[raza de perro]]'} end
if Razas[Raza] == 'caballo' then return {'Equus ferus caballus', 'raza de [[Equus ferus caballus|caballo]]'} end
if Razas[Raza] == 'caprina' then return {'Capra aegagrus hircus', 'raza [[Capra aegagrus hircus|caprina]]'} end
if Razas[Raza] == 'bovina' then return {'Bos primigenius taurus', 'raza [[Bos primigenius taurus|ovina]]'} end
if Razas[Raza] == 'ovina' then return {'', 'raza [[Ovis orientalis aries|ovina]]'} end
if Razas[Raza] == 'ave' then return {'Ovis orientalis aries', 'raza de ave'} end
if Razas[Raza] == 'gallina' then
if Sexo == 'macho' then
return {'Gallus gallus domesticus', 'raza de [[Gallus gallus domesticus|gallo]]'}
else
return {'Gallus gallus domesticus', 'raza de [[Gallus gallus domesticus|gallina]]'}
end
end
if Razas[Raza] == 'conejo' then return {'Oryctolagus cuniculus', 'raza de [[Oryctolagus cuniculus|conejo]]'} end
if Razas[Raza] == 'pato' then return {'pato', 'raza de [[pato]]'} end
if Razas[Raza] == 'burro' then return {'Equus africanus asinus', 'raza de [[Equus africanus asinus|asno]]'} end
end
-- Función para obtener el árbol taxonómico completo (WIP).
-- Esta función es extremadamente costosa, por lo que se debe optimizar lo más posible.
function obtenerTaxonomia()
if argumentos['wikidata'] == 'no' then return false end
local InstanciaDe = elementoTabla(Entidad, 'claims', 'P31', 1)
local InstanciaDeID = mw.wikibase.getEntity(elementoTabla(InstanciaDe, 'mainsnak', 'datavalue', 'value', 'id'))
local Taxonomia = {}
local TaxonSuperior
local TaxonCategoria
local TaxonCategoriaID
local TaxonUltimo
-- :: "grupo de organismos conocidos por un nombre común particular"
if esUnValor(Entidad,'P31','Q55983715') then
local Taxon = mw.wikibase.getEntity(elementoTabla(InstanciaDe, 'qualifiers', 'P642', 1, 'datavalue', 'value', 'id'))
if Taxon then
TaxonCategoriaID = elementoTabla(Taxon, 'claims', 'P105', 1, 'mainsnak', 'datavalue', 'value', 'id')
if TaxonCategoriaID then TaxonCategoria = obtenerEtiquetaWikidata(TaxonCategoriaID) end
local TaxonNombre = elementoTabla(Taxon, 'claims', 'P225', 1)
local TaxonNombreValor = elementoTabla(TaxonNombre, 'mainsnak', 'datavalue', 'value')
local TaxonNombreAutor = obtenerEtiquetaWikidata(elementoTabla(TaxonNombre, 'qualifiers', 'P405', 1, 'datavalue', 'value', 'id'))
local TaxonNombreFecha = elementoTabla(TaxonNombre, 'qualifiers', 'P574', 1, 'datavalue', 'value', 'time')
if TaxonNombreAutor then
TaxonNombreAutor = '[[' .. TaxonNombreAutor .. '|' .. TaxonNombreAutor:match("%s*(%S+)$") .. ']]'
if TaxonNombreFecha then
TaxonNombreAutor = TaxonNombreAutor .. ', ' .. TaxonNombreFecha:sub(2,5)
end
end
if TaxonCategoria and TaxonNombreValor then
Taxonomia[TaxonCategoria] = "''" .. abreviar(TaxonNombreValor) .. "''"
Taxonomia[TaxonCategoria .. '_autoridad'] = TaxonNombreAutor end
TaxonSuperior = mw.wikibase.getEntity(elementoTabla(Taxon, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
end
-- :: Híbrido
elseif esUnValor(Entidad,'P31','Q42621') or esUnValor(Entidad,'P31','Q759721') or esUnValor(Entidad,'P31','Q2293576') or esUnValor(Entidad,'P31','Q49421248') or esUnValor(Entidad,'P31','Q56242815') then
local Progenitor1 = mw.wikibase.getEntity(elementoTabla(Entidad, 'claims', 'P1531', 1, 'mainsnak', 'datavalue', 'value', 'id'))
local Progenitor2 = mw.wikibase.getEntity(elementoTabla(Entidad, 'claims', 'P1531', 2, 'mainsnak', 'datavalue', 'value', 'id'))
if not Progenitor1 or not Progenitor2 then return false end
local Progenitor1Nombre = propiedad('P225', {['enlace'] = 'no'}, Progenitor1)
local Progenitor2Nombre = propiedad('P225', {['enlace'] = 'no'}, Progenitor2)
if not Progenitor1Nombre or not Progenitor2Nombre then return false end
local Progenitor1Enlace = elementoTabla(Progenitor1, 'sitelinks', 'eswiki', 'title')
local Progenitor2Enlace = elementoTabla(Progenitor2, 'sitelinks', 'eswiki', 'title')
if Progenitor1Enlace then
Progenitor1Nombre = "''[[" .. Progenitor1Enlace .. "|" .. abreviar(Progenitor1Nombre) .. "]]''"
else
Progenitor1Nombre = "''" .. abreviar(Progenitor1Nombre) .. "''"
end
if Progenitor2Enlace then
Progenitor2Nombre = "''[[" .. Progenitor2Enlace .. "|" .. abreviar(Progenitor2Nombre) .. "]]''"
else
Progenitor2Nombre = "''" ..abreviar(Progenitor2Nombre) .. "''"
end
local Progenitor1Sexo = elementoTabla(Entidad, 'claims', 'P1531', 1)
local Progenitor2Sexo = elementoTabla(Entidad, 'claims', 'P1531', 2)
if Progenitor1Sexo and Progenitor2Sexo then
Progenitor1Sexo = elementoTabla(Progenitor1Sexo, 'qualifiers', 'P21', 1, 'datavalue', 'value', 'id')
if Progenitor1Sexo == 'Q44148' then
Progenitor1Sexo = ' ♂'
elseif Progenitor1Sexo == 'Q43445' then
Progenitor1Sexo = ' ♀'
else
Progenitor1Sexo = ''
end
Progenitor2Sexo = elementoTabla(Progenitor2Sexo, 'qualifiers', 'P21', 1, 'datavalue', 'value', 'id')
if Progenitor2Sexo == 'Q44148' then
Progenitor2Sexo = ' ♂'
elseif Progenitor2Sexo == 'Q43445' then
Progenitor2Sexo = ' ♀'
else
Progenitor2Sexo = ''
end
else
Progenitor1Sexo = ''
Progenitor2Sexo = ''
end
local Progenitor1Categoria = propiedad('P105', {['enlace'] = 'no'}, Progenitor1)
local Progenitor2Categoria = propiedad('P105', {['enlace'] = 'no'}, Progenitor2)
if not Progenitor1Categoria or not Progenitor2Categoria then return false end
-- Ambos son subespecies
if (Progenitor1Categoria == 'subespecie' or Progenitor1Categoria == 'subspecies') and (Progenitor2Categoria == 'subespecie' or Progenitor2Categoria == 'subspecies') then
Taxonomia['subespecie'] = Progenitor1Nombre .. Progenitor1Sexo .. " × " .. Progenitor2Nombre .. Progenitor2Sexo
-- Especie
local Progenitor1Especie = mw.wikibase.getEntity(elementoTabla(Progenitor1, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
local Progenitor2Especie = mw.wikibase.getEntity(elementoTabla(Progenitor2, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
if not Progenitor1Especie or not Progenitor2Especie then return false end
local Progenitor1EspecieNombre = propiedad('P225', {['enlace'] = 'no'}, Progenitor1Especie)
local Progenitor2EspecieNombre = propiedad('P225', {['enlace'] = 'no'}, Progenitor2Especie)
if not Progenitor1EspecieNombre or not Progenitor2EspecieNombre then return false end
local Progenitor1EspecieEnlace = elementoTabla(Progenitor1Especie, 'sitelinks', 'eswiki', 'title')
local Progenitor2EspecieEnlace = elementoTabla(Progenitor2Especie, 'sitelinks', 'eswiki', 'title')
if Progenitor1EspecieEnlace then
Progenitor1EspecieNombre = "''[[" .. Progenitor1EspecieEnlace .. "|" .. abreviar(Progenitor1EspecieNombre) .. "]]''"
else
Progenitor1EspecieNombre = "''" .. abreviar(Progenitor1EspecieEnlace) .. "''"
end
if Progenitor2EspecieEnlace then
Progenitor2EspecieNombre = "''[[" .. Progenitor2EspecieNombre .. "|" .. abreviar(Progenitor2EspecieNombre) .. "]]''"
else
Progenitor2EspecieNombre = "''" .. abreviar(Progenitor2EspecieNombre) .. "''"
end
-- Ambos son de la misma especie
if Progenitor1EspecieNombre == Progenitor2EspecieNombre then
Taxonomia['especie'] = Progenitor1EspecieNombre
TaxonSuperior = mw.wikibase.getEntity(elementoTabla(Progenitor1Especie, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
-- Ambos son de diferentes especies
else
Taxonomia['especie'] = Progenitor1EspecieNombre .. " × " .. Progenitor2EspecieNombre
-- Género
local Progenitor1Genero = mw.wikibase.getEntity(elementoTabla(Progenitor1Especie, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
local Progenitor2Genero = mw.wikibase.getEntity(elementoTabla(Progenitor2Especie, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
if not Progenitor1Genero or not Progenitor2Genero then return false end
local Progenitor1GeneroNombre = propiedad('P225', {['enlace'] = 'no'}, Progenitor1Genero)
local Progenitor2GeneroNombre = propiedad('P225', {['enlace'] = 'no'}, Progenitor2Genero)
if not Progenitor1GeneroNombre or not Progenitor2GeneroNombre then return false end
local Progenitor1GeneroEnlace = elementoTabla(Progenitor1Genero, 'sitelinks', 'eswiki', 'title')
local Progenitor2GeneroEnlace = elementoTabla(Progenitor2Genero, 'sitelinks', 'eswiki', 'title')
if Progenitor1GeneroEnlace then
Progenitor1GeneroNombre = "''[[" .. Progenitor1GeneroEnlace .. "|" .. Progenitor1GeneroNombre .. "]]''"
else
Progenitor1GeneroNombre = "''" .. Progenitor1GeneroNombre .. "''"
end
if Progenitor2GeneroEnlace then
Progenitor2GeneroNombre = "''[[" .. Progenitor2GeneroEnlace .. "|" .. Progenitor2GeneroNombre .. "]]''"
else
Progenitor2GeneroNombre = "''" .. Progenitor2GeneroNombre .. "''"
end
-- Ambos son del mismo género
if Progenitor1GeneroNombre == Progenitor2GeneroNombre then
Taxonomia['género'] = Progenitor1GeneroNombre
TaxonSuperior = mw.wikibase.getEntity(elementoTabla(Progenitor1Genero, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
-- Ambos son de diferentes géneros
else
Taxonomia['género'] = Progenitor1GeneroNombre .. " × " .. Progenitor2GeneroNombre
TaxonSuperior = mw.wikibase.getEntity(elementoTabla(Progenitor1Genero, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
end
end
-- El primero es subespecie y el segundo es especie
elseif Progenitor1Categoria == 'subespecie' and Progenitor2Categoria == 'especie' then
Taxonomia['subespecie'] = Progenitor1Nombre .. Progenitor1Sexo .. " × " .. Progenitor2Nombre .. Progenitor2Sexo
-- El primero es especie y el segundo es subespecie
elseif Progenitor1Categoria == 'especie' and Progenitor2Categoria == 'subespecie' then
Taxonomia['subespecie'] = Progenitor1Nombre .. Progenitor1Sexo .. " × " .. Progenitor2Nombre .. Progenitor2Sexo
-- Ambos son especies
elseif Progenitor1Categoria == 'especie' and Progenitor2Categoria == 'especie' then
Taxonomia['especie'] = Progenitor1Nombre.. Progenitor1Sexo .. " × " .. Progenitor2Nombre.. Progenitor2Sexo
local Progenitor1Genero = mw.wikibase.getEntity(elementoTabla(Progenitor1, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
local Progenitor2Genero = mw.wikibase.getEntity(elementoTabla(Progenitor2, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
if not Progenitor1Genero or not Progenitor2Genero then return false end
local Progenitor1GeneroNombre = propiedad('P225', {['enlace'] = no}, Progenitor1Genero)
local Progenitor2GeneroNombre = propiedad('P225', {['enlace'] = no}, Progenitor2Genero)
if not Progenitor1GeneroNombre or not Progenitor2GeneroNombre then return false end
local Progenitor1GeneroEnlace = elementoTabla(Progenitor1Genero, 'sitelinks', 'eswiki', 'title')
local Progenitor2GeneroEnlace = elementoTabla(Progenitor2Genero, 'sitelinks', 'eswiki', 'title')
if Progenitor1GeneroEnlace then
Progenitor1GeneroNombre = "''[[" .. Progenitor1GeneroEnlace .. "|" .. Progenitor1GeneroNombre .. "]]''"
else
Progenitor1GeneroNombre = "''" .. Progenitor1GeneroNombre .. "''"
end
if Progenitor2GeneroEnlace then
Progenitor2GeneroNombre = "''[[" .. Progenitor2GeneroEnlace .. "|" .. Progenitor2GeneroNombre .. "]]''"
else
Progenitor2GeneroNombre = "''" .. Progenitor2GeneroNombre .. "''"
end
-- Ambos son del mismo género
if Progenitor1GeneroNombre == Progenitor2GeneroNombre then
Taxonomia['género'] = Progenitor1GeneroNombre
TaxonSuperior = mw.wikibase.getEntity(elementoTabla(Progenitor1Genero, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
-- Ambos son de diferentes géneros
else
Taxonomia['género'] = Progenitor1GeneroNombre .. " × " .. Progenitor2GeneroNombre
TaxonSuperior = mw.wikibase.getEntity(elementoTabla(Progenitor1Genero, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
end
end
-- :: Otros taxones
else
TaxonCategoriaID = elementoTabla(Entidad, 'claims', 'P105', 1, 'mainsnak', 'datavalue', 'value', 'id')
if TaxonCategoriaID then TaxonCategoria = obtenerEtiquetaWikidata(TaxonCategoriaID) end
local TaxonNombre = elementoTabla(Entidad, 'claims', 'P225', 1)
local TaxonNombreValor = elementoTabla(TaxonNombre, 'mainsnak', 'datavalue', 'value')
local TaxonNombreAutor = obtenerEtiquetaWikidata(elementoTabla(TaxonNombre, 'qualifiers', 'P405', 1, 'datavalue', 'value', 'id'))
local TaxonNombreFecha = elementoTabla(TaxonNombre, 'qualifiers', 'P574', 1, 'datavalue', 'value', 'time')
if TaxonNombreAutor then
TaxonNombreAutor = '[[' .. TaxonNombreAutor .. '|' .. TaxonNombreAutor:match("%s*(%S+)$") .. ']]'
if TaxonNombreFecha then
TaxonNombreAutor = TaxonNombreAutor .. ', ' .. TaxonNombreFecha:sub(2,5)
end
end
if TaxonCategoria and TaxonNombreValor then
Taxonomia[TaxonCategoria] = "''" .. abreviar(TaxonNombreValor) .. "''"
Taxonomia[TaxonCategoria .. '_autoridad'] = TaxonNombreAutor end
TaxonSuperior = mw.wikibase.getEntity(elementoTabla(Entidad, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
end
if TaxonSuperior then
local CTLl
local CTKl
while(true) do
CTLl = elementoTabla(TaxonSuperior, 'sitelinks', 'eswiki', 'title')
if not CTL1 then
CTKl = obtenerEtiquetaWikidata(elementoTabla(TaxonSuperior, 'claims', 'P105', 1, 'mainsnak', 'datavalue', 'value', 'id'))
else
CTKl = propiedad('P105', {['enlace'] = 'no'}, TaxonSuperior)
end
CTNl = propiedad('P225', {['enlace'] = 'no'}, TaxonSuperior)
if CTKl and CTNl then
if CTLl then
if CTNl == CTLl then
Taxonomia[CTKl] = "''[[" .. CTLl .. "]]''"
else
Taxonomia[CTKl] = "''[[" .. CTLl .. '|' .. CTNl .. "]]''"
end
else
Taxonomia[CTKl] = "''" .. CTNl .. "''"
end
end
if CTKl == 'dominio' or CTKl == 'Q146481' then break end
TaxonSuperior = mw.wikibase.getEntity(elementoTabla(TaxonSuperior, 'claims', 'P171', 1, 'mainsnak', 'datavalue', 'value', 'id'))
if not TaxonSuperior then break end
if os.clock() > 5 then break end
end
end
Taxonomia['último'] = TaxonCategoriaID
return Taxonomia
end
function obtenerTaxonomiaInferior(Taxonomia)
local Titulo
Taxonomia['último'] = obtenerEtiquetaWikidata(Taxonomia['último'])
if Taxonomia['último'] == 'dominio' then
Ultimo = '[[Subdominio]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'subdominio' then
Ultimo = '[[Superreino]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'superreino' then
Ultimo = '[[Reino]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'reino' then
Ultimo = '[[Subreino]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'subreino' then
Ultimo = '[[Infrareino]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'infrareino' then
Ultimo = '[[Rama]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'rama' then
Ultimo = '[[Superfilo]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'superfilo' then
Ultimo = '[[Superdivisión|Superdivisiones]]'
Gen = 'o'
elseif Taxonomia['último'] == 'superdivisión' then
Ultimo = '[[Filo]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'filo' then
Ultimo = '[[División|Divisiones]]'
Gen = 'o'
elseif Taxonomia['último'] == 'división' then
Ultimo = '[[Subfilo]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'subfilo' then
Ultimo = '[[Subdivisión|Subdivisiones]]'
Gen = 'o'
elseif Taxonomia['último'] == 'subdivisión' then
Ultimo = '[[Infrafilo]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'infrafilo' then
Ultimo = '[[Infradivision]]es'
Gen = 'o'
elseif Taxonomia['último'] == 'infradivision' then
Ultimo = '[[Microfilo]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'microfilo' then
Ultimo = '[[Nanofilo]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'nanofilo' then
Ultimo = '[[Superclase]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'superclase' then
Ultimo = '[[Clase]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'clase' then
Ultimo = '[[Subclase]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'subclase' then
Ultimo = '[[Infraclase]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'infraclase' then
Ultimo = '[[Magnoorden|Magnoórdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'magnoorden' then
Ultimo = '[[Superorden|Superórdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'superorden' then
Ultimo = '[[Gran Orden|Gran Órdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'gran orden' then
Ultimo = '[[Mirorden|Mirórdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'mirorden' then
Ultimo = '[[Orden|Órdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'orden' then
Ultimo = '[[Suborden|Subórdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'suborden' then
Ultimo = '[[Infraorden|Infraórdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'infraorden' then
Ultimo = '[[Microorden|Microórdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'microorden' then
Ultimo = '[[Pavorden|Pavórdenes]]'
Gen = 'a'
elseif Taxonomia['último'] == 'pavorden' then
Ultimo = '[[Supersección|Supersecciones]]'
Gen = 'a'
elseif Taxonomia['último'] == 'supersección' then
Ultimo = '[[Sección|Secciones]]'
Gen = 'a'
elseif Taxonomia['último'] == 'sección' then
Ultimo = '[[Subsección|Subsecciones]]'
Gen = 'a'
elseif Taxonomia['último'] == 'subsección' then
Ultimo = '[[Grupo]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'grupo' then
Ultimo = '[[Superfamilia]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'superfamilia' then
Ultimo = '[[Epifamilia]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'epifamilia' then
Ultimo = '[[Familia]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'familia' then
Ultimo = '[[Subfamilia]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'subfamilia' then
Ultimo = '[[Supertribu]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'supertribu' then
Ultimo = '[[Tribu]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'tribu' then
Ultimo = '[[Subtribu]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'subtribu' then
Ultimo = '[[Género]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'género' then
Ultimo = '[[Subgénero]]s'
Gen = 'o'
elseif Taxonomia['último'] == 'subgénero' then
Ultimo = '[[Supersección|Supersecciones]]'
Gen = 'o'
elseif Taxonomia['último'] == 'supersección' then
Ultimo = '[[Sección|Secciones]]'
Gen = 'a'
elseif Taxonomia['último'] == 'sección' then
Ultimo = '[[Subsección|Subsecciones]]'
Gen = 'a'
elseif Taxonomia['último'] == 'subsección' then
Ultimo = '[[Serie]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'serie' then
Ultimo = '[[Subserie]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'subserie' then
Ultimo = '[[Especie]]s'
Gen = 'a'
elseif Taxonomia['último'] == 'especie' then
Ultimo = '[[Subespecie]]s'
Gen = 'a'
end
-- Retornando solo el título de la sección de taxones inferiores. He de buscar alguna forma de obtener los taxones inferiores
if Ultimo then return {Ultimo, '', Gen} end
end
function obtenerRangoFosil(frame)
local RangoFosil = argumentos['rango_fósil'] or argumentos['fossil_range']
local RangoFosilPrimero = argumentos['rango_fosil_primero'] or argumentos['fossil_range_first']
local RangoFosilUltimo = argumentos['rango_fosil_ultimo'] or argumentos['fossil_range_last']
local PrimerosFosiles = argumentos['primeros_fósiles'] or argumentos['earliest']
local UltimosFosiles = argumentos['últimoss_fósiles'] or argumentos['latest']
local RangoFosilRef = argumentos['rango_fósil_ref'] or argumentos['fossil_range_ref']
local RangoFosilPrefijo = argumentos['rango_fósil_prefijo'] or argumentos['fossil_range_prefix'] or ''
local RangoFosilSufijo = argumentos['rango_fósil_sufijo'] or argumentos['fossil_range_suffix'] or argumentos['fossil_range_ps'] or ''
if RangoFosil then
return RangoFosil
end
if not RangoFosilPrimero then
local RFP = elementoTabla(Entidad, 'claims', 'P580', 1)
local FPRe1 = elementoTabla(Entidad, 'claims', 'P2348', 1)
local FPRe2 = elementoTabla(Entidad, 'claims', 'P2348', 2)
if RFP then
local RFPf = elementoTabla(RFP, 'mainsnak', 'datavalue', 'value')
if RFPf then
RFPf['precision'] = 9
RangoFosilPrimero = require('Módulo:Wikidata/Fecha').FormateaFechaHora(RFPf, {['formatoFecha']='año', ['enlace']='no'})
if RangoFosilPrimero then RangoFosilPrimero = aPotencia(RangoFosilPrimero) end
else
RFPf = ''
end
local RFPr = elementoTabla(RFP, 'qualifiers', 'P2860', 1, 'datavalue', 'value')
local RFPa = elementoTabla(RFP, 'qualifiers', 'P50', 1, 'datavalue', 'value')
local RFPu = elementoTabla(RFP, 'qualifiers', 'P854', 1, 'datavalue', 'value') or ''
local RFPi10 = elementoTabla(RFP, 'qualifiers', 'P854', 1, 'datavalue', 'value') or ''
local RFPi13 = elementoTabla(RFP, 'qualifiers', 'P854', 1, 'datavalue', 'value') or ''
local RFPfpp = elementoTabla(RFP, 'qualifiers', 'P577', 1, 'datavalue', 'value')
if RFPfpp then
RFPfpp['precision'] = 9
RFPfp = require('Módulo:Wikidata/Fecha').FormateaFechaHora(RFPfpp, {['formatoFecha']='año', ['enlace']='no'})
if RFPfp then RFPfp = aPotencia(RFPfp) end
else
RFPfp = ''
end
local RFPfaa = elementoTabla(RFP, 'qualifiers', 'P813', 1, 'datavalue', 'value')
if RFPfaa then
RFPfaa['precision'] = 9
RFPfa = require('Módulo:Wikidata/Fecha').FormateaFechaHora(RFPfaa, {['formatoFecha']='año',['enlace']='no'})
if RFPfa then RFPfa = aPotencia(RFPfa) end
else
RFPfa = ''
end
if RFPr and RFPa then
if RFPi10 or RFPi13 then
if RFPi10 then ISBN = RFPi10 end
if RFPi13 then ISBN = RFPi13 end
RangoFosilRef = frame:preprocess('<ref name=RangoFósil>{{cita libro|tíulo=' .. RFPr .. '|url=' .. RFPu .. '|autor=' .. RFPa .. 'fecha=' .. RFPfa .. 'fechaacceso=' .. RFPfa .. '}}</ref>')
else
RangoFosilRef = frame:preprocess('<ref name=RangoFósil>{{cita web|tíulo=' .. RFPr .. '|url=' .. RFPu .. '|autor=' .. RFPa .. 'fecha=' .. RFPfa .. 'fechaacceso=' .. RFPfa .. '}}</ref>')
end
end
end
end
if not RangoFosilUltimo then
local FRU = elementoTabla(Entidad, 'claims', 'P582', 1)
if FRU then
local FRUf = elementoTabla(FRU, 'mainsnak', 'datavalue', 'value')
if FRUf then
FRUf['precision'] = 9
RangoFosilUltimo = require('Módulo:Wikidata/Fecha').FormateaFechaHora(FRUf, {['formatoFecha']='año',['enlace']='no'})
if RangoFosilUltimo then RangoFosilUltimo = aPotencia(RangoFosilUltimo) end
else
FRUf = ''
end
end
end
if not PrimerosFosiles then PrimerosFosiles = '' end
if not UltimosFosiles then UltimosFosiles = '' end
if not RangoFosilRef then RangoFosilRef = '' end
if RangoFosilPrimero and RangoFosilUltimo then
return frame:preprocess('{{Rango fósil|' .. RangoFosilPrimero .. '|' .. RangoFosilUltimo .. '|earliest=' .. PrimerosFosiles .. '|latest=' .. UltimosFosiles .. '|prefix=' .. RangoFosilPrefijo .. '|PS=' .. RangoFosilSufijo .. '|ref=' .. RangoFosilRef .. '}}')
end
end
-- Esta función pretende obtener las subdivisiones
-- (taxones inferiores inmediatos) de alguna entidad, lo inverso a
-- taxón superior inmediato(P171). (WIP)
function obtenerSubdivisiones(Taxonomia)
local Titulo
return {}
end
-- Función para obtener el peso, según el género (sexo) del taxón.
function obtenerPeso()
local Peso = argumentos['peso']
if Peso then
return Peso
else
local PesoMacho = {}
local PesoHembra = {}
local PesoInd = {}
local PS = elementoTabla(Entidad, 'claims', 'P2067')
if PS then
for k,v in pairs(PS) do
Valor = string.sub(elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'amount'), 2)
Unidad = elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'unit')
Genero = elementoTabla(v, 'qualifiers','P21', 1, 'datavalue', 'value', 'id')
if Unidad == 'http://www.wikidata.org/entity/Q11570' then
if Genero == 'Q44148' then
table.insert(PesoMacho, Valor)
elseif Genero == 'Q43445' then
table.insert(PesoHembra, Valor)
else
table.insert(PesoInd, Valor)
end
end
end
if PesoMacho then
if PesoMacho[1] then
if PesoMacho[2] then
if PesoMacho[1] > PesoMacho[2] then
PesoMachoO = PesoMacho[1] .. ' a ' .. PesoMacho[2] .. ' [[kg]] (machos)'
else
PesoMachoO = PesoMacho[2] .. ' a ' .. PesoMacho[1] .. ' [[kg]] (machos)'
end
else
PesoMachoO = PesoMacho[1] .. ' [[kg]] (machos)'
end
end
end
if PesoHembra then
if PesoHembra[1] then
if PesoHembra[2] then
if PesoHembra[1] < PesoHembra[2] then
PesoHembraO = PesoHembra[1] .. ' a ' .. PesoHembra[2] .. ' [[kg]] (hembras)'
else
PesoHembraO = PesoHembra[2] .. ' a ' .. PesoHembra[1] .. ' [[kg]] (hembras)'
end
else
PesoHembraO = PesoHembra[1] .. ' [[kg]] (hembras)'
end
end
end
if PesoInd then
if PesoInd[1] then
if PesoInd[2] then
if PesoInd[1] > PesoInd[2] then
PesoIndO = PesoInd[1] .. ' a ' .. PesoInd[2] .. ' [[kg]]'
else
PesoIndO = PesoInd[2] .. ' a ' .. PesoInd[1] .. ' [[kg]]'
end
else
PesoIndO = PesoInd[1] .. ' [[kg]]'
end
end
end
if PesoIndO then
return PesoIndO
end
if PesoMachoO and PesoHembraO then
return PesoMachoO .. '<br>\n' .. PesoHembraO
end
if PesoMachoO and not PesoHembraO then
return PesoMacho
end
if PesoHembraO and not PesoMachoO then
return PesoHembraO
end
end
end
end
-- Función para verificar si una cadena coincide con un patrón, con un largo exacto opcional (WIP)
function Match(str, Pattern, Lenght)
if not str or not Pattern or not Lenght then
return false
end
if not type(str) == 'string' or not type(Lenght) == 'number' then
return false
end
if string.len(str) == Lenght then
return true
else
return false
end
end
function abreviar(str)
if not str then return false end
local strAbbr = str:gsub("(%w)%S+%s*","%1\. "):sub(1, -4)
local strLast
for v in str:gmatch("%S+") do
strLast = v
end
if strAbbr and strLast then
return strAbbr .. strLast
end
end
-- Función para agregar puntos y comas a un número
function formatoNumero(num)
local formatted = num
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1.%2')
if (k==0) then
break
end
end
return formatted
end
-- Función para dividir un número en potencias de 10 (por defecto num / 10^6)
function aPotencia(num, potencia)
if not num then return false end
if not potencia then potencia = 6 end
num = tostring(num)
num = num:gsub('%D','')
num = tonumber(num)
num = tostring(num / math.pow(10,potencia))
return formatoNumero(num)
end
return p