Módulo:Zona de pruebas/Giovanni Alfredo Garciliano Diaz/Ficha de personaje
Este módulo no tiene página de documentación[crear]
local p = {}
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')
local ModuloWikidata = require('Module:Wikidata')
local ModuloPaginas = require('Módulo:Páginas')
local elementoTabla = require('Módulo:Tablas').elemento
local argumentos
local Entidad
function p.Ficha(frame)
argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame)
Entidad = mw.wikibase.getEntity(argumentos.id) or {}
local Titulo = argumentos['título'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})
local ColorFondo = argumentos['colorfondo'] or '#ccf'
local Subtitulo
local Obra = argumentos['obra'] or propiedad('P1441')
if Obra then
Subtitulo = "Personaje de ''" .. Obra .. "''"
else
Subtitulo = ''
end
local Imagen = argumentos['imagen'] or argumentos['image'] or argumentos['Imagen']
local Tamano = argumentos['tamañoimagen'] or '220px'
local Pie
if Imagen then
Pie = argumentos['pie'] or argumentos['pie_imagen'] or argumentos['pie imagen'] or argumentos['subtítulo']
else
Imagen, Pie = obtenerImagenWikidata()
end
local PrimeraAparicion = argumentos['primera_aparición'] or argumentos['primera'] or argumentos['debut'] or argumentos['publicado'] or ''
local UltimaAparicion = argumentos['última_aparición'] or argumentos['última'] or argumentos['ultima']
local UltimaAparicionCausa = argumentos['última_aparición_causa'] or argumentos['causa']
if UltimaAparicion then
if UltimaAparicionCausa then
UltimaAparicion = UltimaAparicion .. '(' .. UltimaAparicionCausa .. ')'
else
UltimaAparicion = ''
end
end
local Creadores = argumentos['creador'] or argumentos['autor'] or propiedad('P170',{['linkback'] = 'sí', ['lista'] = 'no ordenada'}) or ''
local Dibujantes = argumentos['dibujante'] or ''
local Interpretes = argumentos['actor'] or propiedad('P175',{['linkback'] = 'sí', ['lista'] = 'no ordenada'}) or ''
local TablaFicha = {
entidad = argumentos.id,
titulo = Titulo,
colorfondo = ColorFondo,
tipocabecera = 'humano fn',
estiloseccion = 'background: #cce',
estiloetiqueta = 'background: #ddf',
subtitulo = Subtitulo,
imagen = Imagen,
['tamañoimagen'] = Tamano,
{tipo='sección',
titulo = 'Personaje',
{'Primera aparición', PrimeraAparicion},
{'Última aparición', UltimaAparicion},
{'Creador(es)', Creadores},
{'Dibujante(s)', Dibujantes},
{'Interpretado por', Interpretes},
}
}
return ModuloFicha.infobox(TablaFicha)
end
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
end
end
function obtenerImagenWikidata()
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','P154',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)
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
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
return pu