Diferencia entre revisiones de «Módulo:Ficha de persona»
Apariencia
Contenido eliminado Contenido añadido
En el parámetro "nombre" se tomarán datos locales o, en su defecto, el título sin coletilla, eliminando la opción de tomar la etiqueta de Wikidata. Ver este hilo en el Café. |
|||
Línea 561: | Línea 561: | ||
{'[[Secularización]]', argumento['secularización']}, |
{'[[Secularización]]', argumento['secularización']}, |
||
{'[[Beatificación]]', argumento['beatificación']}, |
{'[[Beatificación]]', argumento['beatificación']}, |
||
{'[[Canonización]]', argumento['canonización'] |
{'[[Canonización]]', argumento['canonización']}, |
||
{'Festividad', argumento['festividad'] or propiedad('P841')}, |
{'Festividad', argumento['festividad'] or propiedad('P841')}, |
||
{'Atributos', argumento['atributos']}, |
{'Atributos', argumento['atributos']}, |
Revisión del 13:40 2 jul 2023
A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]
Este módulo implementa la plantilla {{Ficha de persona}}
.
- Esta documentación explica el funcionamiento del módulo desde un contexto técnico; para instrucciones de uso de la plantilla, véase la página de documentación sobre la plantilla.
- La página de discusión de este módulo debe reservarse para cuestiones más técncias sobre el módulo; úsese la discusión de la plantilla para discutir sobre datos y parámetros.
Esta documentación está transcluida desde Módulo:Ficha de persona/doc.
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.
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 z = {}
local argumentos -- Tabla de argumentos con los que se llama a la función
local argumento={} -- Argumentos, sin contar los que no tienen datos
local Entidad -- Tabla con los datos en Wikidata de la persona.
local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:...
local obtenerDatosWikidata -- true si se deben obtener datos de Wikidata
-- Módulos y funciones externas
local ModuloFecha = require('Módulo:Fecha')
local edad = ModuloFecha.edad
local ModuloFicha = require('Módulo:Ficha')
local ModuloFormatoTexto = require('Módulo:Formato texto')
local enVariasLineas = ModuloFormatoTexto.enVariasLineas
local entreParentesis = ModuloFormatoTexto.entreParentesis
local ModuloIdentificadores = require('Módulo:Identificadores')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local formatoURL = ModuloWikidataFormatos.formatoURL
local formatoPeriodo = ModuloWikidataFormatos.formatoPeriodo
local formatoId = ModuloWikidataFormatos.formatoId
local ModuloWikidata = require('Módulo:Wikidata')
local lapizWikidata = ModuloWikidata.addLinkback
local categorizarWikidata = ModuloWikidata.categorizar
local getPropiedadWikidata = ModuloWikidata.getPropiedad
local elementoTabla = require('Módulo:Tablas').elemento
local enlazarURL = require('Módulo:URL').enlazar
local sinBandera = require('Módulo:Bandera').sinBandera
-- Constantes
local enMayusculas = {['formatoTexto'] = 'mayúscula', ['linkback']='sí', ['rangoMayor'] = 'sí'}
local enMayusculasO = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o ', ['linkback']='sí', ['rangoMayor'] = 'sí'}
local listaNoOrdenada = {['lista'] = 'no ordenada', ['linkback']='sí', ['rangoMayor'] = 'sí'} --, ['debeExistir'] = 'sí'
--local lugar = {['conjunción']=' o ', ['valor-módulo'] = 'Wikidata/Formato lugar', ['valor-función'] = 'formatoLugar', ['linkback']='sí'}
local debeExistir = {['debeExistir'] = 'sí', ['formatoTexto'] = 'mayúscula', ['linkback']='sí', ['rangoMayor'] = 'sí'}
local conPeriodo = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = formatoPeriodo, ordenar='por fecha', ['linkback']='sí', ['rangoMayor'] = 'sí'}
local conPeriodoDebeExistir = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = formatoPeriodo, ordenar='por fecha', ['debeExistir'] = 'sí', ['linkback']='sí', ['rangoMayor'] = 'sí'}
local sinEnlazar = {['enlace']='no', ['linkback']='sí', ['rangoMayor'] = 'sí'}
local sinLapiz = {['rangoMayor'] = 'sí'}
local normal = {['linkback']='sí', ['rangoMayor'] = 'sí'}
-- Formatos según el tipo de cabecera
local formatos={
['por defecto'] = {['estiloTituloFicha'] = 'background-color:#8DB1C3;color:#FFF'},
['inherit'] = {['estiloTituloFicha'] = 'background-color:#E6E6FA;color:#000'},
--['actor'] = {['estiloTituloFicha'] = ''},
['ajedrecista'] = {['estiloTituloFicha'] = 'background-color:#d38d47;color:#FFF'},
['artista'] = {['estiloTituloFicha'] = 'background-color:#8DB1C3;color:#FFF'},
['astronauta'] = {['estiloTituloFicha'] = 'background-color:transparent;'},
['autoridad'] = {['estiloTituloFicha'] = 'background-color:transparent;', ['estiloTituloSecciones'] ='background-color:#E6E6FA;'},
['cine'] = {['estiloTituloFicha'] = 'background-color:#f9e999'},
['diseñador'] = {['estiloTituloFicha'] = 'background-color:#ED8;color:#000'},
['escritor'] = {['estiloTituloFicha'] = 'background-color:#4c6099;color:#FFF'},
['futbolista'] = {['estiloTituloFicha'] = 'background-color:#CC8;color:#000'},
['militar'] = {['estiloTituloFicha'] = 'background-color:#b0c4de;color:#000'},
['modelo'] = {['estiloTituloFicha'] = 'background-color:#9F9;color:#000'},
--
-- Música
--
['cantante'] = {['estiloTituloFicha'] = 'background-color:#f0e68c'}, -- solista de Plantilla:Ficha de artista musical/selección de color
['músico'] = {['estiloTituloFicha'] = 'background-color:#F4BF92'}, -- instrumentalista_no_vocal (integrantes de grupos no vocalistas, así como solistas instrumentales y directores de orquesta)
['otro música'] = {['estiloTituloFicha'] = 'background-color:#BFE0BF'}, -- otro_personal (productores, compositores, ingenieros)
--
['religioso'] = {['estiloTituloFicha'] = 'background-color:#ffde00; color:#000'},
['periodista'] = {['estiloTituloFicha'] = 'background-color:#ED8;color:#000'},
['televisión'] = {['estiloTituloFicha'] = 'background-color:#ED8;color:#000'},
['torero'] = {['estiloTituloFicha'] = 'background-color: #800000; color: white'},
['videojuego'] = {['estiloTituloFicha'] = 'background-color:#CCF;color:#000'},
['youtuber'] = {['estiloTituloFicha'] = 'background-color:#B60000;color:#fff'},
}
local nombre = ''
function fechaiso(x)
return x.time
end
function z.Ficha(frame)
ModuloWikidata:setFrame(frame) -- No funciona si se pone ModuloWikidata.setFrame(marco)
-- Obtener una copia de los argumentos eliminando los argumentos sin valor
-- y dejando en blanco (aunque no nil) aquellos que valen "no"
argumento = obtenerArgumentosConValor(frame) -- No poner local. Es global.
--Determinar si se deben obtener datos de Wikidata
if argumento['wikidata'] == 'no' and (argumento['fecha de fallecimiento'] or argumento['lugar de fallecimiento']
or argumento['fecha de desaparición'] or argumento['lugar de desaparición']
) then
obtenerDatosWikidata = false
Entidad = nil
else
obtenerDatosWikidata = true
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
Entidad = mw.wikibase.getEntityObject(argumento['id']) or {}
end
--Determinar datos para la ficha
local educacion = argumento['educación'] or argumento['educacion'] or propiedad('P512',sinEnlazar)
local almamater = argumento['alma máter'] or argumento['alma_mater'] or argumento['alma mater'] or argumento['almamáter'] or argumento['alma_máter']
or propiedad('P69', { ['formatoTexto'] = 'mayúscula', ['lista'] = 'no ordenada', ['valor-función']='educado en', ['valor-módulo'] = 'Wikidata/Formatos educación', ['ordenar'] = 'por fecha', ['linkback']='sí'})
local gender = propiedad('P21', {['enlace']='no', ['linkback']='no'})
if gender == 'femenino' or gender == 'mujer transgénero' then
etiquetaAnyosActivo = 'Años activa'
etiquetaConocidoPor = 'Conocida por'
etiquetaInfluencias = 'Influida por'
etiquetacampeon = '[[Campeonato del mundo de ajedrez|Campeona del mundo]]'
etiquetaAlumnoDe = 'Alumna de'
etiquetaEducadoEn = 'Educada en'
funcionOcupacion = formatoOcupacionFemenino
etiquetaVeneradoEn = 'Venerada en'
else
etiquetaAnyosActivo = 'Años activo'
etiquetaConocidoPor = 'Conocido por'
etiquetaInfluencias = 'Influido por'
etiquetacampeon = '[[Campeonato del mundo de ajedrez|Campeón del mundo]]'
etiquetaAlumnoDe = 'Alumno de'
etiquetaEducadoEn = 'Educado en'
funcionOcupacion = formatoOcupacionMasculino
etiquetaVeneradoEn = 'Venerado en'
end
--No entiendo para qué sirve. En principio no se muestra para actores.
--seccionartistica='Carrera artística'
-- Generar los cargos
local hayCargos
local tablaCargos = {tipo='sección'}
if argumento['cargo'] then
hayCargos = true
table.insert(tablaCargos, {'', '<hr>'})
table.insert(tablaCargos, generarcargo(argumento,1,frame))
argumento['predecesor']= nil
argumento['predecesora']= nil
argumento['sucesor']= nil
argumento['sucesora']= nil
end
for i=2, 10 do
if argumento['cargo'..i] or argumento['inicio'..i] then
hayCargos = true
table.insert(tablaCargos, generarcargo(argumento,i,frame))
end
end
-- La ocupación y el área solo se obtienen de Wikidata si no se informan los campos de ocupación y área.
-- Esto es porque para los artistas puede tener en Wikidata como ocupación "pintor y escultor" y
-- tener informada el área con "pintura y escultura".
local ocupacion = argumento['ocupación'] or argumento['ocupacion'] or argumento['Ocupación'] or argumento['profesión']
local area = argumento['área'] or argumento['area'] or argumento['especialidad'] or argumento['campos']
if not ocupacion and not area then
ocupacion = propiedad('P106', {['formatoTexto'] = 'mayúscula', ['valor-función']=funcionOcupacion, ['calificativo'] = formatoPeriodo, ['linkback']='sí'})
area = propiedad('P101', enMayusculas) -- Campo de trabajo
end
local ocupacionOArea = ocupacion or area
nombre = argumento['nombre'] or argumento['Nombre'] or ModuloPaginas.nombrePagina({desambiguar='sí'})
local nombre_completo = argumento['nombre completo']
local nombre_nacimiento = argumento['nombre de nacimiento'] or propiedad('P1477')
local nombre_nacimiento_sin_lapiz = argumento['nombre de nacimiento'] or propiedad('P1477', sinLapiz)
-- Nombre en la escritura nativa.
-- Solo se muestra si no coincide con el nombre o el nombre de nacimiento o el nombre completo
local nombresNativos={tipo='sección'}
local nombreNativo, textoNombreNativo, idiomaNombreNativo
if argumento['nombre nativo'] then
if argumento['nombre nativo'] ~= nombre and
argumento['nombre nativo'] ~= nombre_nacimiento_sin_lapiz and
argumento['nombre nativo'] ~= nombre_completo then
table.insert(nombresNativos,{'Nombre nativo', argumento['nombre nativo']})
end
elseif Entidad then
-- En el caso de obtener de Wikidata puede haber varios nombres nativos
local declaracion = elementoTabla(Entidad, 'claims','P1559')
if declaracion then
for k,v in pairs(declaracion) do
nombreNativo = elementoTabla(v, 'mainsnak', 'datavalue', 'value')
if nombreNativo then
textoNombreNativo = nombreNativo.text
idiomaNombreNativo = nombreNativo.language
if textoNombreNativo and idiomaNombreNativo and
textoNombreNativo ~= nombre and
textoNombreNativo ~= nombre_nacimiento_sin_lapiz and
textoNombreNativo ~= nombre_completo then
table.insert(nombresNativos, {
'Nombre en ' .. mw.language.fetchLanguageName(idiomaNombreNativo, 'es') ,
lapizWikidata(textoNombreNativo,Entidad.id,'P1559')
})
end
end
end
end
end
-- Informar los datos de nacimiento, desaparición y de fallecimiento
-- No se debe alterar el orden para que en caso de que el lugar de fallecimiento o el de desaparición sea el mismo
-- que el de nacimiento esté enlazado el lugar de nacimiento
local nacimiento, desaparicion, fallecimiento
local fechaNacimientoTimestamp = elementoTabla(Entidad, 'claims', 'P569', 1, 'mainsnak', 'datavalue', 'value', 'time')
local lugarNacimiento = argumento['lugar de nacimiento'] or propiedad('P19', {['conjunción']=' o ', ['valor-módulo'] = 'Wikidata/Formato lugar', ['valor-función'] = 'formatoLugar', ['linkback']='sí', fecha=fechaNacimientoTimestamp, ['rangoMayor'] = 'sí'})
local lugarDesaparicion = argumento['lugar de desaparición']
local fechaFallecimientoTimestamp = elementoTabla(Entidad, 'claims', 'P570', 1, 'mainsnak', 'datavalue', 'value', 'time')
local lugarFallecimiento = argumento['lugar de fallecimiento'] or propiedad('P20', {['conjunción']=' o ', ['valor-módulo'] = 'Wikidata/Formato lugar', ['valor-función'] = 'formatoLugar', ['linkback']='sí', fecha = fechaFallecimientoTimestamp, ['rangoMayor'] = 'sí'})
fallecimiento = enVariasLineas({
argumento['fecha de fallecimiento'] or (obtenerDatosWikidata and entreParentesis(propiedad('P570', enMayusculasO), obtenerEdadWikidata('P570'))),
lugarFallecimiento
})
if fallecimiento then
desaparicion = enVariasLineas({
argumento['fecha de desaparición'] or propiedad('P746', enMayusculasO),
lugarDesaparicion
})
else
desaparicion = enVariasLineas({
argumento['fecha de desaparición'] or (obtenerDatosWikidata and entreParentesis(propiedad('P746', enMayusculasO), obtenerEdadWikidata('P746'))),
argumento['lugar de desaparición']
})
end
if fallecimiento or desaparicion then
nacimiento = enVariasLineas({
argumento['fecha de nacimiento'] or propiedad('P569', enMayusculasO),
lugarNacimiento
})
else
nacimiento = enVariasLineas({
argumento['fecha de nacimiento'] or (obtenerDatosWikidata and entreParentesis(propiedad('P569', enMayusculasO), obtenerEdadWikidata())),
lugarNacimiento
})
end
if argumento['padres'] then
padres = estaEnlazado(argumento['padres'])
else
padre = propiedad('P22')
madre = propiedad('P25')
if padre and madre then
padres = padre .. '<br/>' .. madre
padre = nil
madre = nil
end
end
firma = argumento['firma'] or argumento['Firma'] or propiedad('P109', {['enlace'] = 'no', ['linkback'] = false, ['rangoMayor'] = 'sí', ['uno'] = 'sí'}) or ''
if firma and firma ~= '' then
firma = '[[Archivo:' .. firma .. '|175x80px]]'
end
-- Formato del título de la ficha y de las secciones según la ocupación, si la persona tiene cargos o si ha fallecido
local formato, cabecera
if argumento['cabecera'] then
cabecera = argumento['cabecera'] -- Por defecto utilizar el campo cabecera de la plantilla
elseif hayCargos == true then
cabecera = 'autoridad'
elseif not ocupacionOArea then
cabecera = 'por defecto'
elseif ocupacionOArea:find('[Aa]ctor') or ocupacionOArea:find('[Aa]ctriz') or ocupacionOArea:find('[Pp]roductor de cine')
or ocupacionOArea:find('[Dd]irector de cine') then
cabecera = 'cine'
elseif ocupacionOArea:find('[Aa]jedrecista') or argumento['elo'] or rankingajedrez then
cabecera = 'ajedrecista'
elseif ocupacionOArea:find('[Aa]stronauta') then
cabecera = 'astronauta'
elseif ocupacionOArea:find('[Ee]scritor') or ocupacionOArea:find('[Nn]ovelista') or
ocupacionOArea:find('[Pp]oeta') or ocupacionOArea:find('[Dd]ramaturgo') then
cabecera = 'escritor'
elseif ocupacionOArea:find('[Cc]antante') then
cabecera = 'cantante'
elseif ocupacionOArea:find('[Mm]úsico') then
cabecera = 'músico'
elseif ocupacionOArea:find('[Cc]ompositor') then
cabecera = 'otro música'
elseif ocupacionOArea:find('[Pp]olític[oa]') or argumento['cargo'] then
cabecera = 'por defecto'
elseif ocupacionOArea:find('[Pp]eriodista') then
cabecera = 'periodista'
elseif ocupacionOArea:find('[Dd]iseñador') then
cabecera = 'diseñador'
elseif ocupacionOArea:find('[Pp]resentador') or ocupacionOArea:find('[Cc]onductor') then
cabecera = 'televisión'
elseif ocupacionOArea:find('[Mm]odelo') then
cabecera = 'modelo'
elseif ocupacionOArea:find('[Mm]ilitar') then
cabecera = 'militar'
elseif ocupacionOArea:find('[Pp]apa') or ocupacionOArea:find('[Oo]bispo') or
ocupacionOArea:find('[Cc]ardenal') or ocupacionOArea:find('[Pp]atriarca') then
cabecera = 'religioso'
elseif ocupacionOArea:find('[Tt]orero') then
cabecera = 'torero'
elseif ocupacionOArea:find('[Vv]ideojuego') then
cabecera = 'videojuego'
elseif ocupacionOArea:find('[Yy]ou[Tt]uber') or ocupacionOArea:find('[Vv][Tt]uber') then
cabecera = 'youtuber'
else
cabecera = 'por defecto'
end
local OrdenacionDiaconal
if argumento['diaconado por'] then
OrdenacionDiaconal = argumento['diaconado'] .. '<small> por ' ..argumento['diaconado por'].. '</small>'
else
OrdenacionDiaconal = argumento['diaconado']
end
local OrdenacionSacerdotal -- ?item P793 Q41463697 Q585
if argumento['presbiterado por'] then
OrdenacionSacerdotal = argumento['presbiterado'] .. '<small> por ' ..argumento['presbiterado por'].. '</small>'
else
OrdenacionSacerdotal = argumento['presbiterado']
end
local OrdenacionEpiscopal -- ?item P793 Q125375 Q585
if argumento['episcopado por'] then -- ?item P793 Q125375 Q1598
OrdenacionEpiscopal = argumento['episcopado'] .. '<small> por ' ..argumento['episcopado por'].. '</small>'
else
OrdenacionEpiscopal = argumento['episcopado']
end
local Cardenalato -- ?item P793 Q41154026 Q585
if argumento['cardenalato por'] then -- ?item P793 Q41154026 Q748
Cardenalato = argumento['cardenalato'] .. '<small> por ' ..argumento['cardenalato por'].. '</small>'
else
Cardenalato = argumento['cardenalato']
end
local EscudoTitulo, Escudo
if argumento['escudo'] ~= '' and (cabecera == 'religioso' and argumento['escudo'] or propiedad('P94')) then -- ¿deberíamos usar P237 en su lugar?
Escudo = argumento['escudo'] or propiedad('P94', {})
EscudoTitulo = 'Escudo'
else
EscudoTitulo = ''
end
local LemaEscudo = argumento['lema'] or propiedad('P1451')
if LemaEscudo and argumento['lema traducido'] then
LemaEscudo = LemaEscudo .. '<small style="display: block;"> por ' ..argumento['lema traducido'].. '</small>'
end
formato = formatos[cabecera] or {}
local estiloTituloFicha, estiloTituloSecciones
estiloTituloFicha = formato['estiloTituloFicha']
estiloTituloSecciones = formato['estiloTituloSecciones'] or formato['estiloTituloFicha']
if hayCargos == true then
cargosocupados = ''
else
cargosocupados = argumento['cargo ocupado'] or propiedad('P39', {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula',
ordenar='por fecha',
['linkback']='sí',
['valor-función'] = ModuloWikidataFormatos.formatoCargo
})
end
if argumento['ranking'] or argumento['ránking'] then
rankingajedrez= (argumento['ranking'] or argumento['ránking']) .. frame:preprocess('<ref> [http://ratings.fide.com/toplist.phtml Clasificación FIDE] </ref>')
end
local sitioWeb
if argumento['web'] or argumento['página web'] or argumento['website'] or argumento['sitio web'] or argumento['sitioweb'] then
sitioWeb = noAlargar(enlazarURL(argumento['web'] or argumento['página web'] or argumento['website'] or argumento['sitio web'] or argumento['sitioweb']))
else
sitioWeb = propiedad('P856', {['valor-función'] = formatoURL, ['linkback']='sí', ['rangoMayor'] = 'sí'})
end
local victimas = argumento['víctimas']
if victimas then
local ocupacionesValidasVictimas = {'Q484188', 'Q14886050', 'Q26267537', 'Q1154323'} -- asesino en serie, terrorista, violador en serie y asesino relámpago
for k,v in pairs(ocupacionesValidasVictimas) do
local snak = propiedad('P106', {['valor-función'] = formatoId})
if snak and snak:match(v) then
victimas = argumento['víctimas']
break
else
victimas = ''
end
end
end
-- Imagen y pie de la imagen
local imagen = argumento['imagen'] or argumento['Imagen'] or argumento['foto']
local pieDeImagen
if imagen then
pieDeImagen = argumento['pie de imagen'] or argumento['pieimagen'] or
argumento['descripción'] or argumento['descripcion'] or
argumento['pie de foto'] or argumento['piedefoto'] or
argumento['textoimagen'] or argumento['TextoImagen'] or argumento['texto_imagen'] or
argumento['pie de foto']
else
imagen, pieDeImagen = obtenerImagenWikidata()
-- Pendiente obtener el pie del calificativo P2096
end
local relacionados = argumento['relacionados'] or ''
if relacionados and mw.ustring.len(relacionados) > 200 then
relacionados = ''
end
local Ficha = {
wikidata = not obtenerDatosWikidata and 'no',
clase = 'biography vcard',
-- Título
tipocabecera = 'persona',
titulo = nombre,
--colorfondo = colorfondo, -- No se usa
estilotitulo = estiloTituloFicha,
--Imagen
--De momento no se pone una raya como en la ficha de escritor tras la imagen
imagen = imagen,
['tamañoimagen']= argumento['tamaño de imagen'] or argumento['tamaño'] or
argumento['tamaño imagen'] or argumento['tamañoimagen'] or argumento['tamañodelaimagen'] or
argumento['tamaño de foto'] or
'220px', -- or '200px' en la ficha de escritor, 192 en la ficha de artista. Tomo por defecto 220, el tamaño de thumb
pie = pieDeImagen,
-- Pendiente: en la ficha de escritor el texto se pone entre <small> y en la de artista se usa el estilo font-size:smaller
--Etiquetas y datos
estiloetiqueta = 'width:33%', -- 25% en la ficha de escritor. Sin especificar en la de persona
--'padding:0.2em 1.0em 0.2em 0.2em; background-color:transparent; line-height:1.2em;', -- En la ficha de persona original
estilodatos = 'line-height:1.3em; vertical-align:middle;',
tablaCargos,
{tipo='sección',
['titulo'] = 'Información personal', -- Ver la ficha de noble o la ficha de diseñador
estilotitulo = estiloTituloSecciones,
{'Nombre completo', -- solo si no coincide con:
(nombre_completo ~= nombre) and -- - el nombre que se muestra en el título de la ficha
(nombre_completo ~= nombre_nacimiento_sin_lapiz) and -- - o con el nombre de nacimiento
nombre_completo},
{'Nombre de nacimiento', -- solo si no coincide con el nombre que se muestra en el título de la ficha
(nombre_nacimiento_sin_lapiz ~= nombre)
and nombre_nacimiento},
nombresNativos,
{'Nombre religioso', argumento['nombre religioso'] or propiedad('P1635')},
{'Apodo', argumento['apodo'] or propiedad('P1449')},
{'Otros nombres', argumento['otros nombres'] or argumento['alias'], -- ¿No es lo mismo que el apodo?????
clase='nickname'},
{'Nacimiento', nacimiento},
{'Desaparición', desaparicion},
{'Fallecimiento', fallecimiento},
{'Causa de muerte', siNoEs(argumento['causa muerte'] or
propiedad('P509', enMayusculas) or
propiedad('P1196', enMayusculas), 'Causas naturales')}, -- circunstancias de la muerte
{'Sepultura', argumento['lugar de descanso'] or propiedad('P119', {['valor-módulo'] = 'Wikidata/Formato lugar', ['formatoTexto'] = 'mayúscula', ['linkback'] = 'sí'}) },
{'Residencia', sinBandera(argumento['residencia'] or
argumento['país_de_residencia'] or argumento['pais_de_residencia'] or
argumento['lugar_de_residencia']) or
propiedad('P551', {['debeExistir'] = 'sí', ['linkback']='sí', ['rangoMayor'] = 'sí'}),
clase='etiqueta'},
{'Nacionalidad', sinBandera(argumento['nacionalidad'] or argumento['Nacionalidad'] or argumento['ciudadanías']) or --Pendiente hacer que salga el gentilicio
require('Módulo:Wikidata/Formatos país').formatoNacionalidad(elementoTabla(Entidad,'claims','P27'),{
['formatoTexto'] = 'mayúscula',
['propiedad'] = 'P27',
['linkback']='sí', ['entityId']=elementoTabla(Entidad,id)}),
clase='category'},
{'Ciudadanía', sinBandera(argumento['ciudadanía'] or -- ¿No es lo mismo que la nacionalidad?
argumento['ciudadania']),
clase='category'},
{'Etnia', --propiedad('P172', enMayusculas) or
argumento['etnia'] or argumento['grupo étnico'],
clase='category'},
{'Religión', argumento['religión'] or propiedad('P140', debeExistir)},
{'Lengua materna', argumento['lengua materna'] or argumento['Lengua_materna'] or argumento['lengua_materna'] or propiedad('P103', enMayusculas)},
},
{tipo='sección',
estilotitulo = estiloTituloSecciones,
['titulo'] = 'Características físicas',
{'Altura', argumento['altura'] or argumento['estatura'] or propiedad('P2048', {['valor-función']='magnitud', ['valor-módulo'] = 'Wikidata/Formato magnitud', ['linkback']='sí'})},
{'Peso', argumento['peso'] or propiedad('P2067', {['valor-función']='magnitud', ['valor-módulo'] = 'Wikidata/Formato magnitud', ['linkback']='sí'})},
{'Medidas', argumento['medidas']},
{'Ojos', argumento['color de ojos'] or propiedad('P1340', enMayusculas)},
{'Cabello', argumento['color de cabello'] or propiedad('P1884', enMayusculas)},
{'[[Mamoplastia de aumento|Pecho natural]]', argumento['busto natural']},
--{'[[Orientación sexual]]', propiedad('P91', enMayusculas) or argumento['orientación sexual'] or argumento['orientación real']}
},
{tipo='sección',
-- Familia.
estilotitulo = estiloTituloSecciones,
['titulo'] = 'Familia', -- Ver la ficha de noble
-- En el caso del cónyuge tiene preferencia el argumento hasta que se muestre los calificativos.
clase ='plainlist', -- Mostrar las listas sin viñetas
{'Familia', propiedad('P53', debeExistir)},
{(padres and 'Padres') or (padre and 'Padre') or 'Madre', -- Mostrar padres, padre o madre según esté informado ambos o solo uno de ellos
padres or padre or madre},
{'Cónyuge', estaEnlazado(argumento['cónyuge'] or argumento['conyuge'] or argumento['Cónyuge'] or argumento['Conyuge'] or
propiedad('P26', conPeriodo))},
{'Pareja', estaEnlazado(argumento['pareja'] or propiedad('P451', conPeriodo))},
{'Hijos', estaEnlazado(argumento['hijos'] or argumento['Hijos']) or
propiedad('P40', {['lista'] = 'no ordenada', ['debeExistir'] = 'sí', ['linkback']='sí'}) or
propiedad('P1971', sinEnlazar)
},
{'Familiares', estaEnlazado(argumento['familiares'])}, --- ¿¿¿¿¿¿¿¿¿??????????? -- Hermano: P7, padastro: p43, pariente: p1038
},
{tipo='sección',
['titulo'] = 'Educación',
estilotitulo = estiloTituloSecciones,
{'Educación', educacion},
{etiquetaEducadoEn, almamater, clase='plainlist'},
{'Posgrado', argumento['posgrado']},
{'Tesis doctoral',
entreParentesis(
(argumento['url tesis'] and enlazarURL(argumento['url tesis'], ModuloFormatoTexto.enCursivas(argumento['título tesis']))-- Si se informa la url
) or (not argumento['url tesis'] and ModuloFormatoTexto.enCursivas(argumento['título tesis']) -- Si no se informa la url
)
, argumento['año tesis'])
},
{'Supervisora doctoral', argumento['supervisora doctoral']},
{'Supervisores doctorales' , argumento['supervisores doctorales']},
{'Supervisor doctoral' , argumento['supervisor doctoral'] or propiedad('P184')},
{etiquetaAlumnoDe, argumento['alumno de'] or propiedad('P1066', conPeriodoDebeExistir), clase='plainlist'},
},
{tipo='sección',
['titulo'] = 'Información profesional',
estilotitulo = estiloTituloSecciones,
{'Ocupación', ocupacion, clase='role'},
{'Área', area},
{etiquetaAnyosActivo, argumento['años activo'] or argumento['años activa'] or argumento['añosactivo'] or
argumento['periodo'] or argumento['período'] or argumento['Periodo'] or
argumento['tiempo'] or argumento['Tiempo'] or argumento['años actividad'] or
formatoPeriodo({ -- falta que salga el lápiz
['P580']={[1]=elementoTabla(Entidad, 'claims','P2031',1,'mainsnak')},
['P582']={[1]=elementoTabla(Entidad, 'claims','P2032',1,'mainsnak')}
})},
{etiquetaConocidoPor, argumento['conocido por'] or argumento['conocido']},
{'Cargos ocupados', cargosocupados,clase='plainlist'}, -- políticos o en empresas
{'Tratamiento', argumento['tratamiento']},
{'Salario', argumento['salario']},
{'Patrimonio', argumento['patrimonio'] or argumento['fortuna']},
{'Empresa', argumento['empresa']},
{'Estudio', argumento['nombre estudio']}, -- Arquitectos
{'Restaurantes', argumento['restaurantes']}, -- Para cocineros. Restaurantes en los que ha trabajado.
{tipo='sección',
['título'] = 'Información religiosa',
estilotitulo = estiloTituloSecciones,
{'[[Sacramento del orden|Ordenación diaconal]]', OrdenacionDiaconal},
{'Ordenación sacerdotal', OrdenacionSacerdotal},
{'Ordenación episcopal', OrdenacionEpiscopal},
{'Proclamación cardenalicia', Cardenalato},
{'Título cardenalicio', argumento['título cardenalicio']},
{'Iglesia', argumento['iglesia']},
{'[[Secularización]]', argumento['secularización']},
{'[[Beatificación]]', argumento['beatificación']},
{'[[Canonización]]', argumento['canonización']},
{'Festividad', argumento['festividad'] or propiedad('P841')},
{'Atributos', argumento['atributos']},
{etiquetaVeneradoEn, argumento['venerado en'] or propiedad('P1049')},
{'Patronazgo', argumento['patronazgo'] or propiedad('P417')},
{'Santuario', argumento['santuario']},
},
-- Sección artística (actores y ¿presentadores?)
{tipo='sección',
['titulo'] = seccionartistica,
estilotitulo = estiloTituloSecciones,
{'Rol debut' , argumento['rol debut']},
{'Año de debut' , argumento['rol debut'] and argumento['año debut']},
--{'Año de retiro', argumento['año retiro'] or propiedad('P2032')},
{'Películas' , argumento['número de películas']},
{'Serie' , argumento['serie']},
},
{'Empleador', argumento['empleador'] or
argumento['institución_de_trabajo'] or
argumento['nombre_estudio'] or
propiedad('P108', conPeriodo),
clase ='plainlist'},
--Profesores
{'Estudiantes doctorales', argumento['estudiantes doctorales'] or propiedad('P185', debeExistir)},
{(ocupacionOArea and ocupacionOArea:find('[Pp]rofesor') and 'Estudiantes') or 'Alumnos', argumento['estudiantes'] or propiedad('P802', debeExistir)},
-- Periodistas, presentadores y videoblogueros
{tipo='sección',
{'Medio', argumento['medio de comunicación']}, -- Unas veces informados con el significado de área y otras con el empleador
{'Canal', argumento['canal']},
{'Programas', argumento['programas'] or argumento['programa']},
},
-- Videoblogueros, en especial youtubers
{tipo='sección',
{'Vídeos', argumento['videos']},
{'Suscriptores', argumento['suscriptores']},
{'Vistas totales', argumento['vistas totales']},
},
-- Ocupación (escritores, artistas, periodistas, diseñadores, etc)
-- Información artística
{tipo='sección',
plural(argumento['movimiento'] or argumento['Movimiento'] or argumento['movimientos'] or
propiedad('P135', {
['valor-módulo'] = 'Wikidata/Formato movimiento',
['valor-función'] = 'formatoMovimiento',
['linkback']='sí',
['calificativo'] = formatoPeriodo,
['rangoMayor'] = 'sí',
ordenar='por fecha', ['formatoTexto'] = 'mayúscula',}), 'Movimiento', 'Movimientos'),
{'Seudónimo', argumento['seudónimo'] or argumento['Seudónimo'] or argumento['alias'] or argumento['Alias'] or propiedad('P742')},
{'Lengua literaria', argumento['lengua_literaria'] or argumento['Lengua_literaria']},
plural(argumento['género'] or argumento['Género'] or propiedad('P136', enMayusculas), 'Género', 'Géneros'),
plural(argumento['instrumento'] or propiedad('P1303', enMayusculas), 'Instrumento', 'Instrumentos'),
{'Tipo de voz', argumento['voz'] or argumento['tipo de voz'] or argumento['tesitura'] or propiedad('P412', enMayusculas)},
plural(argumento['compañía discográfica'] or propiedad('P264', conPeriodo), 'Discográfica', 'Discográficas', 'plainlist'),
},
-- Obras notables. Se ponen de momento en cursivas pero es incorrecto en el caso de arquitectos.
{'Obras notables', argumento['obras destacadas'] or
argumento['obras notables'] or argumento['obras_notables'] or argumento['Obras notables'] or
argumento['obras'] or
argumento['proyectos_representativos'] or propiedad('P800',{['enlace']='sí', ['lista'] = 'no ordenada', ['debeExistir'] = 'sí', ['formatoTexto']='cursivas', ['linkback']='sí'}),
clase='plainlist'
},
{'Proyectos representativos', argumento['proyectos representativos']},
{'Artistas relacionados', relacionados},
{'[[Autor de nombre científico#Abreviatura del autor|Abreviatura en botánica]]',
argumento['abreviatura en botánica'] or propiedad('P428')},
{'[[Autor de nombre científico|Abreviatura en zoología]]',
argumento['abreviatura en zoología'] or propiedad('P835')},
{'[[Autor de nombre científico|Abreviatura en astronomía]]',
argumento['abreviatura en astronomía']},
--{'', listaDesplegable(etiquetaInfluencias, argumento['influenciado por'] or argumento['influido por'] or
-- argumento['influencias'] or argumento['Influencias'], frame)},
--{'', listaDesplegable('Influyó a', argumento['influyó en'] or argumento['influyó'] or argumento['Influyó'], frame)},
-- Militares
{'Lealtad', argumento['lealtad'] or propiedad('P945', enMayusculas)},
{'Rama militar', argumento['rama'] or propiedad('P241', enMayusculas)},
{'Unidad militar', argumento['unidad'] or propiedad('P7779', enMayusculas)},
{'Mandos', argumento['mandos']},
{'[[Grado militar|Rango militar]]', argumento['rango'] or propiedad('P410', conPeriodo), clase='plainlist'},
{'Conflictos', argumento['conflictos'] or argumento['batallas'] or propiedad('P607', enMayusculas)},
-- Astronautas (un subtipo de militar)
{'Misiones espaciales', argumento['misiones espaciales'] or propiedad('P450')},
{'Tiempo en el espacio', argumento['tiempo espacio']},
-- Toreros
{'Debut becerrista', argumento['debut becerrista']},
{'Debut [[picador]]', argumento['debut picador']},
{'Debut [[novillero]]', argumento['debut novillero']},
{'Alternativa', argumento['alternativa']},
{'Confirmación de alternativa', argumento['alternativa confirmación']},
{'Apoderado', argumento['apoderado']},
{'Escalafón general', argumento['escalafón']},
{'Invención', argumento['invención']},
{'Triunfos', argumento['triunfos']},
{'Retirada definitiva', argumento['retirada']},
-- Ajedrecistas
{tipo='sección',
{'Título', argumento['título'] or argumento['titulo']}, -- <!-- Su majestad, primera dama, etc -->
{etiquetacampeon, argumento['campeón'] or argumento['campeon']},
{'[[Sistema de puntuación Elo|Elo]]', propiedad('P1087',{['formatoUnidad'] = 'número', ['calificativo'] = 'P585', ['linkback']='sí', ['rangoMayor'] = 'sí', ['ordenar'] = 'por fecha', ['uno'] = 'último'}) or argumento['elo'] }, --
{'[[Sistema de puntuación Elo|Mejor elo]]', argumento['mejor elo']},
{'Escalafón FIDE', rankingajedrez},
{'Mejor escalafón', argumento['mejor ranking']},
{'Término', argumento['término'] or -- <!--Años bajo los cuales la persona tuvo el título (el de arriba xD) -->
argumento['termino']},
{'Predecesor', argumento['predecesor']},
{'Predecesora', argumento['predecesora']},
{'Sucesor', argumento['sucesor']},
{'Sucesora', argumento['sucesora']},
},
{'Partido político', argumento['partido político'] or argumento['partido'] or propiedad('P102', conPeriodo), clase='plainlist'},
{'Orden religiosa', argumento['congregación'] or propiedad('P611', enMayusculas)},
{'Afiliaciones', argumento['afiliaciones'] or propiedad('P1416')},
{'Miembro de', argumento['miembro de'] or argumento['sindicato'] or propiedad('P463', conPeriodoDebeExistir), clase='plainlist'},
{'Central sindical', argumento['central sindical'], clase='plainlist'},
-- Web
{'Sitio web', sitioWeb},
},
{tipo='sección',
['titulo'] = 'Premios artísticos', -- Ver la ficha de noble o la ficha de diseñador
estilotitulo = estiloTituloSecciones,
{'[[Premios Óscar]]', argumento['premios óscar']},
{'[[Premios Globo de Oro|Globos de Oro]]', argumento['premios globo de oro']},
{'[[Premios BAFTA]]', argumento['premios bafta']},
{'[[Premios Emmy]]', argumento['premios emmy']},
{'[[Premios del Sindicato de Actores|Premios SAG]]', argumento['premios sag']},
{'[[Premios Tony]]', argumento['premios tony']},
{'[[Premios Grammy]]', argumento['premios grammy']},
{'[[Festival de Cannes]]', argumento['premios cannes']},
{'[[Berlinale]]', argumento['premios berlinale']},
{'[[Festival Internacional de San Sebastián]]', argumento['premios san sebastian']},
{'[[Festival Internacional de Cine de Moscú]]', argumento['premios moscu']},
{'[[Premios Goya]]', argumento['premios goya'] },
{'[[Premios César]]', argumento['premios césar'] or argumento['premios cesar']},
{'[[Premios Ariel]]', argumento['premios ariel']},
{'[[Premios Cóndor de Plata]]', argumento['premios cóndor'] or argumento['premios condor']},
{'[[TP de Oro]]', argumento['premios tp de oro']},
{'[[Premios Ondas]]', argumento['premios ondas']},
{'[[Premios Iris (España)|Premios Iris]]', argumento['premios atv']},
{'[[Premios Protagonistas]]', argumento['premios protagonistas']},
{'[[Antena de Oro|Premios Antena de Oro]]', argumento['premios antena de oro']},
{'[[Premios Micrófono de Oro]]', argumento['premios micrófono de oro']},
{'[[Premio APM al Mejor Periodista del Año|Premio Víctor de la Serna]]', argumento['premios víctor de la serna']},
{'Otros premios', argumento['otros premios']},
},
{tipo='sección',
['titulo'] = 'Carrera deportiva', -- Ver la ficha de noble o la ficha de diseñador
estilotitulo = estiloTituloSecciones,
{'Deporte', argumento['deporte'] or propiedad('P641', enMayusculas)},
{'Representante de', argumento['representante'] or propiedad('P1532', conPeriodo)},
},
{tipo='sección',
['titulo'] = 'Perfil de jugador',
estilotitulo = estiloTituloSecciones,
{'Juegos', argumento['juegos'] or propiedad('P2416')},
{'Posición', argumento['posición'] or propiedad('P413')},
{'Número', argumento['número'] or propiedad('P1618')},
{'Equipos', argumento['equipos'] or propiedad('P54')},
{'Ligas', argumento['ligas'] or propiedad('P118')},
{'Selección', argumento['selección']},
{'Medallista', argumento['medallista olímpico']},
{'Entrenador', argumento['entrenador'] or propiedad('P6087')},
{'Plataformas de transmisión', argumento['plataforma']},
},
{'',seccionDesplegable('Títulos y <br> reconocimientos',argumento['títulos'], frame,estiloTituloSecciones)},
-- Los premios pueden ser para varias ocupaciones por lo que se ponen al final
-- Premios, condecoraciones, distinciones, etc.
{'Distinciones', argumento['premios'] or argumento['Premios'] or
argumento['premio'] or argumento['Premio'] or
argumento['premios2'] or
obtenerPremios(Entidad)
, clase ='plainlist'}, -- Mostrar las listas sin viñetas
{tipo='sección',
['titulo'] = 'Medallas',
estilotitulo = estiloTituloSecciones,
{'', argumento['medallas'] },
},
{tipo='sección',
['titulo'] = 'Información criminal',
estilotitulo = estiloTituloSecciones,
{'[[Delito|Cargos criminales]]', argumento['cargos criminales'] or propiedad('P1399'), clase='plainlist'},
-- P2632 puede ser usado en alguno de los dos parámetros de abajo
{'[[Sentencia (derecho)|Condena]]', argumento['condena']},
{'Situación penal', argumento['situación penal']},
{'Víctimas', victimas},
},
-- Con etiqueta/datos como en las fichas de escritor y artista en vez de como en la ficha de persona
{'Firma', firma },
{tipo='sección',
titulo ='Notas',
estilotitulo='border-top:1px solid #c0c0c0;text-align:left',
{'', argumento['notas'], estilodatos='text-align:left;font-size:90%; line-height:1.2em'}
},
-- Sección hipotética, las imágenes inferiores no se muestran dentro de una sección
{'',
EscudoTitulo or '',
estilodatos = 'text-align: center; font-weight: bold;' .. (estiloTituloSecciones or ''),
},
imageninferior = Escudo,
['tamañoimageninferior'] = '110px',
pieinferior = LemaEscudo,
--{'Fuente biográfica', argumento['fuentebiográfica']},
entidad = argumento['id'], -- para el enlace final a wikidata
}
categorias = {}
if argumento['lugar_de_descanso'] or --renombrado
argumento['supervisora_doctoral'] or --renombrado
argumento['supervisores_doctorales'] or --renombrado
argumento['supervisor_doctoral'] or --renombrado
argumento['tesis_url'] or --renombrado
argumento['tesis_título'] or --renombrado
argumento['tesis_año'] or --renombrado
argumento['abreviatura en astronomía']
--or argumento['influyó en'] or argumento['influyó'] or argumento['Influyó'] -- eliminado
--or argumento['predecesor'] or argumento['sucesor']-- eliminado
or argumento['fuentebiográfica'] --por eliminar
or argumento['mail'] --por eliminar
then
table.insert(categorias, '[[Categoría:Wikipedia:Páginas con parámetros a reemplazar de la plantilla ficha de persona ]]')
end
local NF = require('Módulo:NF')
-- table.insert(categorias, NF.catLivingStatus(argumento['fecha de nacimiento'], argumento['fecha de fallecimiento'], true ) )
table.insert(categorias, NF.catSexGenderIdentity())
if argumento['títulos secciones'] == '' then -- "no" al llamar a la ficha
--if true then return require('Módulo:Tablas').tostring(Ficha) end
eliminarTitulosSecciones(Ficha)
end
namespace = mw.title.getCurrentTitle().namespace
if categorias[1] and (namespace == 0 or namespace == 104) then
return ModuloFicha.infobox(Ficha) .. table.concat(categorias)
else
return ModuloFicha.infobox(Ficha)
end
end
function eliminarTitulosSecciones (tabla)
if tabla.tipo == 'sección' then
tabla.titulo = nil
end
for k, v in pairs( tabla ) do
if type(v) == 'table' then
eliminarTitulosSecciones(v)
end
end
--if true then return require('Módulo:Tablas').tostring(tabla) end
end
function generarcargo(argumento,numero,frame)
dato=numero --se requieren dos variables por el primer parámetro
if numero == 1 then numero ='' end --si es el primer cargo, entonces no tiene número
if argumento ['cargo'..numero] == nil then titulo=''
elseif argumento['escudo'..numero] == nil then titulo=argumento['cargo'..numero] -- si no tiene escudo entonces dejar en blanco, si tiene escudo ponerlo
else titulo='[[Archivo:'..argumento['escudo'..numero]..'|44x40px]]<br />'..argumento['cargo'..numero] end
if argumento['distrito'..numero] then titulo = titulo..'<br /><small>por '..argumento['distrito'..numero]..'</small>' end
if argumento['embajadorde'..numero] then titulo = titulo .. frame:preprocess('<br /> {{bandera|'.. argumento['embajadorde'..numero] ..'|tamaño=44x40px}}') end--{{bandera|{{{embajadorde}}}|tamaño=44x40px}}
if argumento['país'..numero] then titulo = titulo .. frame:preprocess('{{bandera|'.. argumento['país'..numero] ..'|tamaño=44x40px}}') end
if argumento['subtítulo'..numero] then titulo = titulo .. '<br /><small>'..argumento['subtítulo'..numero]..'</small>' end
periodo = ''
if argumento['inicio'..numero] and argumento['final'..numero] then
periodo = argumento['inicio'..numero]..'-'.. argumento['final'..numero]
elseif argumento['final'..numero] then
periodo = 'Hasta el ' .. argumento['final'..numero]
elseif argumento['inicio'..numero] then
titulo = titulo .. '<br /> <small> Actualmente en el cargo</small>'
periodo = 'Desde el '..argumento['inicio'..numero]
end
cadenatexto={tipo='sección',
['titulo']=titulo,
estilotitulo = 'background-color:#E6E6FA;',
{'', periodo},
{'Junto con', argumento['juntoa'..numero] },
{'Nominado por', argumento['nominado'..numero] },
{'Nominada por', argumento['nominada'..numero] },
{'Designado por', argumento['designado'..numero] },
{'Designada por', argumento['designada'..numero] },
{'[[Monarca]]', argumento['monarca'..numero] },
{'[[Presidente]]', argumento['presidente'..numero] },
{'[[Primer ministro]]', argumento['primerministro'..numero] },
{'[[Canciller]]', argumento['canciller'..numero] },
{'[[Gobernador]]', argumento['gobernador'..numero] },
{'[[Alcalde]]', argumento['alcalde'..numero] },
{'[[Alcalde|Alcaldesa]]', argumento['alcaldesa'..numero] },
{'[[Jefe de Gobierno]]', argumento['jefe'..numero] },
{'[[Jefe de Gobierno|Jefa de Gobierno]]', argumento['jefa'..numero] },
{'[[Gabinete (política)|Gabinete]]', argumento['gabinete'..numero] },
{'[[Gabinete (política)|Consejo de Ministros]]', argumento['consejo'..numero] },
{'Secretario', argumento['secretario'..numero]},
{'Secretaria', argumento['secretaria'..numero]},
{'[[Vicepresidente]]', argumento['vicepresidente'..numero] },
{'[[Vicepresidente|Vicepresidenta]]', argumento['vicepresidenta'..numero] },
{'[[Vice primer ministro]]', argumento['viceprimerministro'..numero] },
{'[[Vice primer ministro|Vice primera ministra]]', argumento['viceprimeraministra'..numero] },
{'Vicecanciller', argumento['vicecanciller'..numero]},
{'[[Vicegobernador]]', argumento['vicegobernador'..numero] },
{'[[Vicegobernador|Vicegobernadora]]', argumento['vicegobernadora'..numero] },
{'[[Teniente gobernador]]', argumento['teniente'..numero] },
{'Vicealcalde', argumento['vicealcalde'..numero] },
{'Vicejefe de gobierno', argumento['vicejefe'..numero]},
{'Predecesor', argumento['predecesor'..numero]},
{'Predecesora', argumento['predecesora'..numero]},
{'Sucesor', argumento['sucesor'..numero]},
{'Sucesora', argumento['sucesora'..numero]},
{argumento[dato..'data1'], argumento[dato..'data2'] },
{argumento[dato..'data3'], argumento[dato..'data4'] },
{'','<hr>'}
}
return cadenatexto
end
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
function propiedad(idPropiedad,opciones)
-- No obtener ninguna propiedad de Wikidata para las personas fallecidas si se accede con el parámetro wikidata=no
if not obtenerDatosWikidata then
return
end
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {['linkback']='sí'}
end
opciones.entityId = Entidad.id
--if idPropiedad =='P1477' then return require('Módulo:Tablas').tostring(Entidad) end -- FALTA
opciones.propiedad = idPropiedad
valorPropiedad = getPropiedadWikidata(opciones,Entidad.claims[idPropiedad])
if not valorPropiedad then
return
end
if valorPropiedad:match('%[%[:d:') then
algunaPropiedadEnlazaWikidata = true
end
return valorPropiedad
end
end
function listaDesplegable(titulo, lista, frame)
if not lista then
return
end
formatoprevio='background:transparent'
return frame:preprocess('{{lista desplegable|título=' .. titulo ..
--'|marco_estilo=border:0; padding:0; border-top:1px solid #c0c0c0;' ..
'|marco_estilo=border:0; padding:0;' ..
'|título_estilo=background-color:#8DB1C3;color:#FFF; text-align:left|lista_estilo=padding-left:33%;text-align:left; display:none|1='
.. lista .. '}}')
end
function seccionDesplegable(titulo, lista, frame, estilotitulo)
if not lista then
return
end
return frame:preprocess('{{Sección desplegable|título=' .. titulo ..
--'|marco_estilo=border:0; padding:0; border-top:1px solid #c0c0c0;' ..
'|datos=<div style="text-align:left;margin: 1px; padding: 2px; border:1px">'.. lista .. '</div>|estilotitulo='.. (estilotitulo or '') ..';}}')
end
function estaEnlazado(que)
-- De momento devolver siempre que está enlazado pues falla en por ejemplo:
-- |Hijos = 6{{#tag:ref|Entre ellos [[Catalina Parra|Catalina]], [[Colombina Parra|Colombina]], Juan de Dios y Ricardo Nicanor «Chamaco».<ref>[http://www.caras.cl/libros/nicanor-parra-cronologia-intima/ Nicanor Parra: Cronología íntima]</ref>|group=nota}}
if true then return que end
if not que then
return
end
for contenido in que:gmatch("%[%[(.+)]]") do
if not contenido:match('^:d:') and
not contenido:match('^Categoría:') then
return que
end
end
end
function formatoOcupacionMasculino(valor, opciones, frame, calificativos)
local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor)
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion, opciones)
end
function formatoOcupacionFemenino(valor, opciones, frame, calificativos)
local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor)
-- Para las ocupaciones más frecuentes no se accederá a Wikidata
local tablaOcupacionesFemeninas={
['Q40348' ] = 'abogada',
['Q16631371'] = 'académica',
['Q15253558'] = 'activista',
['Q1476215' ] = 'activista por los derechos humanos',
['Q33999' ] = 'actriz',
['Q10800557'] = 'actriz de cine',
['Q11481802'] = 'actriz de doblaje',
['Q948329' ] = 'actriz de género',
['Q2259451' ] = 'actriz de teatro',
['Q10798782'] = 'actriz de televisión',
['Q2405480' ] = 'actriz de voz',
['Q488111' ] = 'actriz pornográfica',
['Q10873124'] = 'ajedrecista',
['Q4773904' ] = 'antropóloga',
['Q2478141' ] = 'aristócrata',
['Q42973' ] = 'arquitecta',
['Q483501' ] = 'artista',
['Q7019111' ] = 'asistenta social',
['Q11063' ] = 'astrónoma',
['Q18814623'] = 'autobiógrafa',
['Q482980' ] = 'autora',
['Q5716684' ] = 'bailarina',
['Q805221' ] = 'bailarina de ballet',
['Q864503' ] = 'bióloga',
['Q8246794' ] = 'bloguera',
['Q177220' ] = 'cantante',
['Q2865819' ] = 'cantante de ópera',
['Q488205' ] = 'cantautora',
['Q901' ] = 'científica',
['Q15212951'] = 'cineasta',
['Q1086863' ] = 'columnista',
['Q245068' ] = 'comediante',
['Q36834' ] = 'compositora',
['Q2722764' ] = 'conductora radiofónica',
['Q2490358' ] = 'coreógrafa',
['Q18939491'] = 'diarista',
['Q193391' ] = 'diplomática',
['Q2526255' ] = 'directora de cine',
['Q5322166' ] = 'diseñadora',
['Q627325' ] = 'diseñadora gráfica',
['Q462390' ] = 'docente',
['Q214917' ] = 'dramaturga',
['Q188094' ] = 'economista',
['Q974144' ] = 'educadora',
['Q131524' ] = 'emprendedora',
['Q43845' ] = 'empresaria',
['Q186360' ] = 'enfermera',
['Q11774202'] = 'ensayista',
['Q36180' ] = 'escritora',
['Q4853732' ] = 'escritora de literatura infantil',
['Q1281618' ] = 'escultora',
['Q11900058'] = 'exploradora',
['Q13472585'] = 'filántropa',
['Q4964182' ] = 'filósofa',
['Q169470' ] = 'física',
['Q33231' ] = 'fotógrafa',
['Q28389' ] = 'guionista',
['Q201788' ] = 'historiadora',
['Q715301' ] = 'historietista',
['Q82594' ] = 'informática teórica',
['Q16533' ] = 'jueza',
['Q4379701 '] = 'jugadora profesional',
['Q185351' ] = 'jurista',
['Q644687' ] = 'ilustradora',
['Q14467526'] = 'lingüista',
['Q1371925' ] = 'locutora',
['Q2251335' ] = 'maestra',
['Q191633' ] = 'mangaka',
['Q2412523' ] = 'matadora',
['Q170790' ] = 'matemática',
['Q39631' ] = 'médica',
['Q4610556' ] = 'modelo',
['Q639669' ] = 'música',
['Q6625963' ] = 'novelista',
['Q1930187' ] = 'periodista',
['Q1028181' ] = 'pintora',
['Q728711' ] = 'playmate',
['Q49757' ] = 'poeta',
['Q82955' ] = 'política',
['Q270389' ] = 'presentadora de noticias',
['Q947873' ] = 'presentadora de televisión',
['Q3282637' ] = 'productora de cine',
['Q37226' ] = 'profesora',
['Q121594' ] = 'profesora',
['Q16145150'] = 'profesora de música',
['Q1622272' ] = 'profesora de universidad',
['Q212980' ] = 'psicóloga',
['Q3242115' ] = 'revolucionaria',
['Q3068305' ] = 'salonnière',
['Q622807' ] = 'seiyū',
['Q512314' ] = 'socialité',
['Q2306091' ] = 'socióloga',
['Q1141526' ] = 'stripper',
['Q1234713' ] = 'teóloga',
['Q549322' ] = 'torera',
['Q333634' ] = 'traductora',
['Q350979' ] = 'zoóloga',
}
local etiquetaOcupacionCorregida = tablaOcupacionesFemeninas[idEntidadOcupacion]
if etiquetaOcupacionCorregida then
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacionCorregida, idEntidadOcupacion, opciones)
else
-- La ocupación no está en la tabla anterior. Se intenta obtener de la propiedad P2522 en Wikidata de la ocupación
etiquetaOcupacionCorregida = ModuloWikidata.getPropiedadEnEspanyol(idEntidadOcupacion, 'P2521') or etiquetaOcupacion
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacionCorregida, idEntidadOcupacion, opciones)
end
end
function obtenerValorCalificativo(Propiedad, Calificativo, ValorPropiedad)
-- Obtener el valor del primer calificativo de la propiedad con el valor recibido
if not Entidad or not Entidad.claims or not Entidad.claims[Propiedad] then
return
end
for k,v in pairs(Entidad.claims[Propiedad]) do
if v.mainsnak
and v.mainsnak.datavalue
and v.mainsnak.datavalue.value
and v.mainsnak.datavalue.value['numeric-id'] == ValorPropiedad
and v.qualifiers
and v.qualifiers[Calificativo]
and v.qualifiers[Calificativo][1]
and v.qualifiers[Calificativo][1].datavalue then
return v.qualifiers[Calificativo][1].datavalue.value
end
end
end
function obtenerArgumentosConValor(frame)
local original
if frame == mw.getCurrentFrame() then
original = frame:getParent().args
else
original = frame.args or frame
end
local copia= {}
for k,v in pairs(original) do
if v == 'no' and k ~= 'wikidata' then
--Si vale "no" dejar en blanco el argumento para no obtener el valor
--de Wikidata
copia[k] = ''
elseif v~='' then
--Si está en blanco dejarlo a nil para obtener en su caso el valor de
-- Wikidata si no hay otro argumento con un nombre similar
copia[k] = original[k]
end
end
return copia
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','P18')
if not imagen then
return
end
imagen = require('Módulo:Wikidata').filtrarDeclaracionPorRango(imagen)[1]
-- Obtener el nombre de la imagen
valorImagen = elementoTabla(imagen, 'mainsnak','datavalue','value') -- Por ejemplo, imagen.jpg
-- Obtener los pies de la imagen, uno por idioma
piesDeImagen = elementoTabla(imagen, 'qualifiers','P2096')
-- Encontrar el pie en español (aquel con datavalue.value.language = "es")
if piesDeImagen then
for k,pieDeImagen in pairs(piesDeImagen) do
if pieDeImagen.datavalue.value.language=='es' then
-- devolver la imagen y el texto del pie de la imagen en español
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
if piesDeImagen[1].datavalue and piesDeImagen[1].datavalue.value then
return valorImagen, nombre .. ' en ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(piesDeImagen[1].datavalue.value, {['formatoFecha']='año',['enlace']='no'})
else
return valorImagen, nombre
end
end
-- Sin pie de imagen en español
return valorImagen
end
function obtenerFechaWikidata(propiedad)
local declaracionesFecha = elementoTabla(Entidad, 'claims', propiedad)
-- No devolver la edad si no hay ninguna o si hay varias fechas.
if not declaracionesFecha or declaracionesFecha[2] then
return
end
local declaracionFecha = declaracionesFecha[1]
if not declaracionFecha then
return
end
local valorFecha = elementoTabla(declaracionFecha, 'mainsnak', 'datavalue', 'value')
if not valorFecha then
return
end
--La precisión debe llegar hasta el día
if valorFecha.precision ~= 11 then
return
end
local iso = valorFecha.time
if not iso then
return
end
local fecha = {}
fecha.calendario = valorFecha.calendarmodel
fecha.anyo = tonumber(iso:sub(1, 5))
fecha.mes = tonumber(iso:sub(7,8))
fecha.dia = tonumber(iso:sub(10,11))
return fecha
end
function obtenerEdadWikidata(propiedadFin)
local fechaNacimiento = obtenerFechaWikidata('P569')
if not fechaNacimiento then
return
end
if propiedadFin then
local fechaFin = obtenerFechaWikidata(propiedadFin)
if fechaFin and
fechaFin.calendario == fechaNacimiento.calendario then
return edad(fechaNacimiento, fechaFin)
end
else
return edad(fechaNacimiento)
end
end
function noAlargar(que)
if not que then
return
end
return '<div style="width:14.66em;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;">' .. que .. '</div>'
end
function plural(que, singular, plural, pClase)
if not que then
return {}
elseif que:match(',') or que:match('</li><li>') then
return {plural, que, clase=pClase}
else
return {singular, que, clase=pClase}
end
end
function obtenerPremios(p_entidad)
if not p_entidad then
return
end
local moduloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local obtenerDatos = moduloWikidataFormatos.obtenerDatos
local enlazar = moduloWikidataFormatos.enlazar
local moduloWikidata = require('Módulo:Wikidata')
local formatoDatoWikidata = moduloWikidata.formatoDato
local filtrarDeclaracionPorRango = moduloWikidata.filtrarDeclaracionPorRango
local moduloTablas = require('Módulo:Tablas')
local elementoTabla = moduloTablas.elemento
local ordenarTabla = moduloTablas.ordenar
local agruparTabla = moduloTablas.agrupar
local opcionesFecha= {['formatoTexto']='mayúscula', ['formatoFecha'] = 'año', ['enlace']='no'}
local noMostrarPremio={
['Q11415564'] = true, -- doctor honoris causa
}
-- Obtenemos los datos primarios (ids y años de los premios)
local declaracionPremios = elementoTabla(p_entidad, 'claims', 'P166')
if not declaracionPremios then
return
end
-- Quedarnos solo con los premios con mayor rango. Ejemplo Bettina Rheims
declaracionPremios = filtrarDeclaracionPorRango(declaracionPremios)
if not declaracionPremios then
return
end
local premios = {}
local premio, idPremio, anyo
-- 1. Identificadores de los premios y años
-- Se eliminan los premios de la tabla noMostrarPremio
for k,v in pairs(declaracionPremios) do
idPremio = elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'id')
if idPremio and not noMostrarPremio[idPremio] then
premio = {}
premio.id = idPremio
anyo = formatoDatoWikidata(elementoTabla(v, 'qualifiers','P585',1), opcionesFecha , {})
if anyo ~= '' then
premio.anyo = anyo
end
table.insert(premios, premio)
end
end
ordenarTabla(premios, {'id', 'anyo'})
premios = agruparTabla(premios, 'id', 'anyo')
-- 2. Añado el nombre completo del premio, el enlace y la categoría
local nombreCompleto, nombre, categoria, enlace
for k,v in pairs(premios) do
if v.anyo then
v.primerAnyo = v.anyo[1] or ''
else
v.primerAnyo = ''
end
nombreCompleto = (mw.wikibase.label( v.id ) or ''):gsub(".", string.upper,1) -- El primer carácter en mayúscula
enlace = mw.wikibase.sitelink( v.id )
-- Corregir el nombre del premio
nombreCompleto = nombreCompleto:gsub('Premios ', 'Premio ')
nombreCompleto = nombreCompleto:gsub('Anexo:', '')
-- Determinar si es una categoría de un premio
nombre, categoria = nombreCompleto:match('^(.*)%s+(a%s.*)$') -- Ejemplo: Premio Nébula a la mejor novela corta --> Premio Nébula
if not nombre then
nombre, categoria = nombreCompleto:match('^(.*)%s+(al%s.*)$') -- Ejemplo: Premio Hugo al mejor relato --> Premio Hugo
end
if nombre then
v.nombre = nombre
v.categoria = {
['id'] = v.id,
['anyo'] = v.anyo,
['nombre'] = categoria,
['enlace'] = enlace,
['nombreCompleto'] = nombreCompleto,
}
v.id = nil
v.anyo = nil
else
v.nombre = nombreCompleto
v.enlace = enlace
end
end
ordenarTabla(premios, {'nombre', 'primerAnyo'})
premios = agruparTabla(premios, 'nombre', 'categoria')
ordenarTabla(premios, {'primerAnyo'})
--if true then return require('Módulo:Tablas').tostring(premios) end
-- 3. Doy formato eliminando algunos premios
local premiosFormateados = {}
local premioFormateado, categoriaFormateada, categoriasPremio
local nombrePremio
for k,premio in ipairs(premios) do
nombrePremio = premio.nombre
if nombrePremio:match('^[dD]octor honoris causa') or
nombrePremio:match('^[hH]onorary doctor') or
(argumento['premios emmy'] and nombrePremio:match('Emmy')) or
(argumento['premios grammy'] and nombrePremio:match('Grammy')) or
(argumento['premios cannes'] and nombrePremio:match('Cannes')) or
(argumento['premios globo de oro'] and nombrePremio:match('Globo')) or
(argumento['premios tony'] and nombrePremio:match('Tony')) or
(argumento['premios óscar'] and nombrePremio:match('Óscar')) or
(argumento['premios bafta'] and nombrePremio:match('BAFTA')) or
(argumento['premios sag'] and nombrePremio:match('Sindicato de Actores')) or
(argumento['premios san sebastian'] and nombrePremio:match('San Sebastián'))
then
-- No mostrar
elseif premio.categoria then
categoriasPremio = {}
for k2,categoria in ipairs(premio.categoria) do
categoriaFormateada = enlazar(categoria.enlace, categoria.nombre, categoria.id)
-- Añadir los años entre paréntesis
if categoria.anyo then
categoriaFormateada = categoriaFormateada .. ' <small>(' .. mw.text.listToText( categoria.anyo, ', ',' y ' ) .. ')</small>'
end
table.insert(categoriasPremio, categoriaFormateada)
end
table.insert(premiosFormateados, premio.nombre .. ' ' .. mw.text.listToText( categoriasPremio, ', ',' y ' ))
else
premioFormateado = enlazar(premio.enlace, premio.nombre, premio.id)
if premio.anyo and premio.anyo[1] then
premioFormateado = premioFormateado .. ' <small>(' .. mw.text.listToText( premio.anyo, ', ',' y ' ) .. ')</small>'
end
table.insert(premiosFormateados, premioFormateado)
end
end
-- No obtener los premios de Wikidata si hay muchos.
if premiosFormateados[10] then
return
end
-- Añadir el lápiz
if premiosFormateados[1] then
return lapizWikidata('<ul><li>' .. mw.text.listToText( premiosFormateados, '</li><li>','</li><li>' ),p_entidad.id,'P166') .. '</li></ul>'
end
end
function siNoEs(que, valor)
if not que then
return
end
if not que:match(valor) then
return que
end
end
function z.premios(frame)
local args = frame.args
local entidad = mw.wikibase.getEntityObject(args.id)
if not entidad then
return
end
return obtenerPremios(entidad)
end
return z