Diferencia entre revisiones de «Módulo:Ficha de persona»
Apariencia
Contenido eliminado Contenido añadido
mSin resumen de edición |
m Arreglo error que haga que no se vean los datos de Wikidata |
||
Línea 34: | Línea 34: | ||
local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame) |
local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame) |
||
-- Obtener los datos de la página donde se inserta la ficha de Wikidata. |
-- Obtener los datos de la página donde se inserta la ficha de Wikidata. |
||
Entidad = mw.wikibase.getEntityObject(argumento['id']) or {} |
|||
--Determinar datos para la ficha |
--Determinar datos para la ficha |
Revisión del 17:04 13 dic 2015
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 eliminando los argumentos sin datos
local Entidad -- Tabla con los datos en Wikidata del libro.
-- Ver Wikidata:WikiProject Books para las propiedades posibles
local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:...
local datosautoridad={} --inicializa la tabla que genera los cargos para cada autoridad
-- Módulos utilizados
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')
local ModuloFormatoTexto = require('Módulo:Formato texto')
local ModuloIdentificadores = require('Módulo:Identificadores')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloTablas = require('Módulo:Tablas')
local ModuloURL = require('Módulo:URL')
-- Constantes
local enMayusculas = {['formatoTexto'] = 'mayúscula'}
local contadorocupaciones = 0 --Implementa la lógica de si la persona tiene más de dos ocupaciones la ficha tenga un encabezado estandár
local enMayusculasO = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o '}
local listaNoOrdenada = {['lista'] = 'no ordenada'} --, ['debeExistir'] = 'sí'
local lugar = {['conjunción']=' o ', ['valor-función'] = ModuloWikidataFormatos.formatoLugar}
local debeExistir = {['debeExistir'] = 'sí'}
local conPeriodo = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo, ordenar='por fecha'}
local conPeriodoDebeExistir = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo, ordenar='por fecha', ['debeExistir'] = 'sí'}
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
local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame)
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
Entidad = mw.wikibase.getEntityObject(argumento['id']) or {}
--Determinar datos para la ficha
local educacion = argumento['educación'] or argumento['educacion'] or propiedad('P512',{['enlace']='no'})
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', ['calificativo'] = 'P512',['separadorcalificador']='<br>'})
etiquetaAnyosActivo = 'Años activo/a' --Valor por defecto
if propiedad('P21') == 'femenino' then
etiquetaAnyosActivo = 'Años activa'
etiquetaConocidoPor = 'Conocida por'
etiquetaInfluencias = 'Influida por'
etiquetacampeon = '[[Campeonato del mundo de ajedrez|Campeona del mundo]]'
funcionOcupacion = formatoOcupacionFemenino
else
etiquetaAnyosActivo = 'Años activo'
etiquetaConocidoPor = 'Conocido por'
etiquetaInfluencias = 'Influido por'
funcionOcupacion = formatoOcupacionMasculino
etiquetacampeon = '[[Campeonato del mundo de ajedrez|Campeón del mundo]]'
end
seccionartistica='Carrera artística'
--GENERAR CARGOS
if argumento['cargo']==nil then
datosautoridad['cargo1']={tipo='sección',{'',''},}
else
saltoautoridad='<hr>'
datosautoridad['cargo1']=generarcargo(argumento,1)
argumento['predecesor']= nil
argumento['sucesor']= nil
end
for i=2, 10 do
campovacio=0
if argumento['cargo'..i]==nil and argumento['inicio'..i]==nil then
datosautoridad['cargo'..i]={tipo='sección',{'',''},}
else
datosautoridad['cargo'..i]=generarcargo(argumento,i)
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['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'] = ModuloWikidataFormatos.formatoPeriodo})
area = propiedad('P101', enMayusculas) -- Campo de trabajo
end
local ocupacionOArea = ocupacion or area
nombre = argumento['nombre'] or argumento['Nombre'] or
obtenerEtiquetaWikidata() or
ModuloPaginas.nombrePagina({desambiguar='sí'})
-- Informar los datos de nacimiento y de fallecimiento
fechaNacimiento = argumento['fecha de nacimiento'] or argumento['fechadenacimiento'] or
argumento['fecha_nacimiento'] or argumento['Fecha_nacimiento'] or
argumento['fecha nacimiento'] or argumento['fechadenacimiento'] or
argumento['fechanac'] or argumento['fecha_de_nacimiento'] or
propiedad('P569', enMayusculasO)
lugarNacimiento = argumento['lugar de nacimiento'] or argumento['lugardenacimiento'] or
argumento['lugar'] or
argumento['lugar_nacimiento'] or argumento['Lugar_nacimiento'] or
argumento['lugar nacimiento'] or argumento['lugarnac'] or
argumento['lugar_de_nacimiento'] or
propiedad('P19', lugar)
if fechaNacimiento and lugarNacimiento then
nacimiento = fechaNacimiento .. '<br />' .. lugarNacimiento
else
nacimiento = fechaNacimiento or lugarNacimiento
end
fechaFallecimiento = argumento['fecha de fallecimiento'] or argumento['fechadefallecimiento'] or argumento['fecha_de_fallecimiento'] or
argumento['fecha fallecimiento'] or argumento['fecha_fallecimiento'] or argumento['Fecha_fallecimiento'] or
argumento['fecha de defunción'] or
argumento['fecha_muerte'] or argumento['fechamuerte'] or
propiedad('P570', enMayusculasO)
lugarFallecimiento = argumento['lugar de fallecimiento'] or argumento['lugardefallecimiento'] or argumento['lugar_de_fallecimiento'] or
argumento['lugar fallecimiento'] or argumento['lugar_fallecimiento'] or argumento['Lugar_fallecimiento'] or
argumento['lugar de defunción'] or
argumento['lugar_muerte'] or argumento['lugarmuerte'] or
propiedad('P20', lugar)
if fechaFallecimiento and lugarFallecimiento then
fallecimiento = fechaFallecimiento .. '<br />' .. lugarFallecimiento
else
fallecimiento = fechaFallecimiento or lugarFallecimiento
end
if argumento['padres'] then
padres = estaEnlazado(argumento['padres'])
else
padre = propiedad('P22') --, debeExistir)
madre = propiedad('P25') --, debeExistir)
if padre and madre then
padres = padre .. '<br/>' .. madre
else
padres = padre or madre
end
end
firma = argumento['firma'] or argumento['Firma'] or
propiedad('P109')
if propiedad('P856') then web = '['..propiedad('P856')..' Sitio Web]' else
web = argumento['web'] or argumento['página web'] or argumento['website'] or argumento['sitio web'] or argumento['sitioweb']
end
twitter = argumento['twitter'] or argumento['Twitter'] or obtenerTwitter()
facebook = argumento['facebook'] or argumento['Facebook'] or obtenerFacebook()
imdb = (argumento['imdb'] and ('nm' .. argumento['imdb'])) or propiedad('P345',{uno='sí'})
catholicHierarchy = propiedad('P1047')
if argumento['año debut'] or argumento['año retiro'] then
if argumento['año debut'] and argumento['año retiro']==nil then
etiquetaactor ='Año de debut'
datoactor = argumento['año debut']
elseif argumento['año debut']==nil and argumento['año retiro'] then
etiquetaactor='Año de retiro'
datoactor = argumento['año debut']
elseif argumento['año debut'] and argumento['año retiro'] then
etiquetaactor = etiquetaAnyosActivo
datoactor = argumento['año debut'].. '-'..argumento['año retiro']
end
else
etiquetaactor =''
datoactor =''
end
-- Título según la ocupación y si la persona ha muerto
-- No mostrar para los artistas ningún icono en la cabecera de la ficha
if ocupacionOArea and (ocupacionOArea:find('[Aa]ctor') or ocupacionOArea:find('[Aa]ctriz') or ocupacionOArea:find('[Pp]roductor de cine')
or ocupacionOArea:find('[Dd]irector de cine') ) then
contadorocupaciones=contadorocupaciones+1
tipocabecera = 'cine'
estilotitulo = 'background-color:#f9e999'
seccionartistica = ''
end
if contadorocupaciones==0 and ocupacionOArea and (ocupacionOArea:find('[Aa]rtista') or ocupacionOArea:find('[Pp]intor') or
ocupacionOArea:find('[Ee]scultor') or ocupacionOArea:find('[Pp]intura') or ocupacionOArea:find('[Ee]scultura')
or ocupacionOArea:find('[Ff]otograf') or ocupacionOArea:find('[Aa]rtes visuales')) then
contadorocupaciones=1
tipocabecera = ''
estilotitulo = 'background-color:#8DB1C3;color:#FFF'
end
if contadorocupaciones==0 and ocupacionOArea and (ocupacionOArea:find('[Aa]jedrecista') or argumento['elo'] or rankingajedrez) then
contadorocupaciones=1
tipocabecera = ''
estilotitulo = 'background-color: #D8BFD8'
end
if contadorocupaciones==0 and ocupacionOArea and (ocupacionOArea:find('[Ee]scritor') or ocupacionOArea:find('[Nn]ovelista') or
ocupacionOArea:find('[Pp]oeta') or ocupacionOArea:find('[Dd]ramaturgo')) then
contadorocupaciones=contadorocupaciones+1
tipocabecera = 'libro'
estilotitulo = 'background-color:#4c6099;color:#FFF'
end
if contadorocupaciones==0 and ocupacionOArea and (ocupacionOArea:find('[Mm]úsico') or ocupacionOArea:find('[Cc]ompositor') or
ocupacionOArea:find('[Cc]antante')) then
contadorocupaciones=contadorocupaciones+1
tipocabecera = 'música'
estilotitulo = 'background-color:#f0e68c'
end
--Pendiente por poner el estilo de POLITICO!
if contadorocupaciones==0 and ((ocupacionOArea and (ocupacionOArea:find('[Pp]olítico'))) or argumento['cargo']) then
contadorocupaciones=contadorocupaciones+1
tipocabecera = 'libro'
estilotitulo = 'background-color:#4c6099;color:#FFF'
end
if contadorocupaciones==0 and ocupacionOArea and ocupacionOArea:find('[Pp]eriodista') then
contadorocupaciones=contadorocupaciones+1
tipocabecera = 'revista'
estilotitulo = 'background-color:#ED8;color:#FFF'
end
if contadorocupaciones==0 and ocupacionOArea and ocupacionOArea:find('[Dd]iseñador') then
contadorocupaciones=contadorocupaciones+1
estilotitulo = 'background-color:#ccccff'
end
if contadorocupaciones == 2 or contadorocupaciones==0 then
tipocabecera = 'humano fn'
estilotitulo = 'background-color:#8DB1C3;color:#FFF'
end
if fechaFallecimiento or lugarFallecimiento then
estilotitulo = 'background-color:#c0c0c0;color:#000'
end
estilocabecera = estilotitulo
if argumento['cargo'] then
tipocabecera= nil
estilocabecera= 'background-color:transparent;'
--estilotitulo ='background-color:#8DB1C3;color:#FFF'
estilotitulo ='background-color:#E6E6FA;'
end
if argumento['premios globo de oro'] then eliminarpremio2='Globo' else eliminarpremio2=nil end
if argumento['premios óscar'] then eliminaroscar ='Óscar' end
if argumento['premios sag'] then eliminarpremio='indicato'end
if argumento['premios san sebastian'] then eliminarsebastian='Sebas'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 Ficha = {
clase = 'biography vcard',
-- Título
tipocabecera = tipocabecera,
titulo = nombre,
colorfondo = colorfondo,
estilotitulo = estilocabecera,
--Imagen
--De momento no se pone una raya como en la ficha de escritor tras la imagen
imagen = argumento['imagen'] or argumento['Imagen'] or
argumento['foto'] or
propiedad('P18', {uno='sí'}),
['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 = 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']
,
-- 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 = 'padding:0.2em; line-height:1.3em; vertical-align:middle;',
{tipo='sección',
{'', saltoautoridad},
},
datosautoridad['cargo1'],
datosautoridad['cargo2'],
datosautoridad['cargo3'],
datosautoridad['cargo4'],
datosautoridad['cargo5'],
datosautoridad['cargo6'],
datosautoridad['cargo7'],
datosautoridad['cargo8'],
datosautoridad['cargo9'],
datosautoridad['cargo10'],
{tipo='sección',
['titulo'] = 'Información personal', -- Ver la ficha de noble o la ficha de diseñador
estilotitulo = estilotitulo,
{'Nombre de nacimiento', propiedad('P1477') or
propiedad('P513') or
argumento['nombre completo'] or argumento['nombre_completo'] or argumento['Nombre_completo'] or
argumento['nombre nacimiento'] or argumento['nombredenacimiento'] or argumento['nombre de nacimiento'] or
argumento['nombre_real'] or argumento['nombrecompleto']
},
{'Nombre nativo', argumento['nombre nativo'] or propiedad('P1559')}, -- Es para el nombre en la escritura nativa
-- Habría que coger también el idioma
{'Apodo', argumento['apodo']},
{'Otros nombres', argumento['otros nombres'], -- ¿No es lo mismo que el apodo?????
clase='nickname'},
{'Nacimiento', nacimiento},
{'Fallecimiento', fallecimiento},
{'Causa de muerte', argumento['causa muerte'] or
propiedad('P509', enMayusculas) or
propiedad('P1196', enMayusculas)}, -- circunstancias de la muerte
{'Lugar de descanso', argumento['lugar_de_descanso']},
{'Residencia', argumento['residencia'] or
argumento['país_de_residencia'] or argumento['pais_de_residencia'] or
argumento['lugar_de_residencia'] or
propiedad('P551'),
clase='etiqueta'},
{'Nacionalidad', argumento['nacionalidad'] or argumento['Nacionalidad'] or --Pendiente hacer que salga el gentilicio
propiedad('P27', {['valor-función'] = ModuloWikidataFormatos.formatoGentilicio,
['formatoTexto'] = 'mayúscula',
['calificativo'] = ModuloWikidataFormatos.formatoPeriodo,
ordenar='por fecha'}),
clase='category'},
{'Ciudadanía', argumento['ciudadanía'] or -- ¿No es lo mismo que la nacionalidad?
argumento['ciudadania'],
clase='category'},
{'Lengua materna', argumento['lengua_materna'] or argumento['Lengua_materna'] or propiedad('P103', enMayusculas)},
{'Etnia', propiedad('P172', enMayusculas) or
argumento['etnia'] or argumento['grupo étnico'],
clase='category'},
{'Creencias religiosas', propiedad('P140', enMayusculas) or
argumento['religión'] or
argumento['creencias']},
{'Partido político', argumento['partido político'] or argumento['partido'] or propiedad('P102')},
{'Otras afiliaciones políticas', argumento['afiliaciones'] or propiedad('P1416')},
},
{tipo='sección',
estilotitulo = estilotitulo,
['titulo'] = 'Características físicas', -- Ver la ficha de noble o la ficha de diseñador
{'Altura', argumento['altura'] or argumento['estatura'] or propiedad('P2048')},
{'Peso', argumento['peso'] or propiedad('P2067')},
{'Ojos', argumento['color de ojos']},
{'Cabello', argumento['color de cabello']},
{'[[Implante de mama|Pecho natural]]', argumento['busto natural']},
{'[[Orientación sexual]]',argumento['orientación sexual'] or argumento['orientación real']}
},
{tipo='sección',
-- Familia.
estilotitulo = estilotitulo,
['titulo'] = 'Familia', -- Ver la ficha de noble
-- En el caso del cónyuge tiene preferencia el argumento hasta que se muestre los calficativos.
clase ='plainlist', -- Mostrar las listas sin viñetas
{'Familia nobiliaria', propiedad('P53')},
{'Padres', estaEnlazado(padres)},
{'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í'})},
{'Familiares', estaEnlazado(argumento['familiares'])}, --- ¿¿¿¿¿¿¿¿¿??????????? -- Hermano: P7, padastro: p43, pariente: p1038
},
{tipo='sección',
['titulo'] = 'Educación',
estilotitulo = estilotitulo,
{'Educación', educacion},
{'Alma máter', almamater, clase='plainlist'},
{'Posgrado', argumento['posgrado']},
{'Supervisora doctoral', argumento['supervisora_doctoral']},
{'Supervisores doctorales' , argumento['supervisores_doctorales']},
{'Supervisor doctoral' , argumento['supervisor_doctoral']},
{'[[Tesis]]', ModuloFormatoTexto.enlazar(argumento['tesis_url'], ModuloFormatoTexto.enCursivas(argumento['tesis_título']), argumento['tesis_año'])},
},
{tipo='sección',
['titulo'] = 'Información profesional',
estilotitulo = estilotitulo,
{'Ocupación', ocupacion, clase='role'},
{'Área', area},
{'Cargos ocupados', propiedad('P39', conPeriodo), clase='plainlist'}, -- políticos o en empresas
{'Empresa', argumento['empresa']},
{'Salario', argumento['salario']},
{'Patrimonio', argumento['patrimonio'] or argumento['fortuna']},
{'Tratamiento', argumento['tratamiento']},
{etiquetaAnyosActivo, argumento['años activo'] or argumento['años activa'] or
argumento['periodo'] or argumento['período'] or argumento['Periodo'] or
argumento['tiempo'] or argumento['Tiempo']}, -- Periodistas
{tipo='sección',
['titulo'] = seccionartistica, -- Ver la ficha de noble o la ficha de diseñador
estilotitulo = estilotitulo,
{'Rol debut',argumento['rol debut']},
{etiquetaactor, datoactor},
{'Películas',argumento['número de películas']},
},
{'Empleador', argumento['empleador'] or
argumento['institución_de_trabajo'] or
argumento['nombre_estudio'] or
propiedad('P108', conPeriodo),
clase ='plainlist'},
{'Restaurantes', argumento['restaurantes']}, -- Para cocineros. Restaurantes en los que ha trabajado.
{'Medio', argumento['medio de comunicación']}, -- Para periodistas. Unas veces informados con el significado de área y otras con el empleador
{'Programas', argumento['programas']}, -- Para periodistas
-- Ocupación (escritores, artistas, periodistas, diseñadores, etc)
{'[[Seudónimo]]', argumento['seudónimo'] or argumento['Seudónimo'] or propiedad('P742')},
{'Lengua de producción literaria', argumento['lengua_literaria'] or argumento['Lengua_literaria']},
{'Género', argumento['género'] or argumento['Género'] or propiedad('P136', enMayusculas)},
{'[[Movimiento artístico|Movimientos]]', argumento['movimiento'] or
argumento['Movimiento'] or
argumento['movimientos'] or
propiedad('P135', enMayusculas)},
{'Obras notables', argumento['obras'] or
argumento['obras notables'] or argumento['obras_notables'] or argumento['Obras notables'] or
argumento['obras destacadas'] or
argumento['proyectos_representativos'] or propiedad('P800',{['enlace']='sí', ['lista'] = 'no ordenada', ['debeExistir'] = 'sí', ['formatoTexto']='cursivas'}),
clase='plainlist'
},
{'Artistas relacionados', argumento['relacionados']},
--{'', listaDesplegable(etiquetaInfluencias, argumento['influenciado por'] or argumento['influido por'] or
-- argumento['influencias'] or argumento['Influencias'], frame)},
--{'', listaDesplegable('Influyó a', argumento['influyó'] or argumento['Influyó'], frame)},
-- Militares
{'Rama militar',argumento['rama'] or propiedad('P241', enMayusculas)},
{'Rango', argumento['rango'] or propiedad('P410', conPeriodo), clase='plainlist'},
{'Participó en', argumento['conflictos'] or argumento['batallas'] or propiedad('P607', enMayusculas)},
},
--AJEDRECISTA
{etiquetaConocidoPor, argumento['conocido'] or argumento['conocido por']},
{'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'})
or argumento['elo'] }, --
{'[[Sistema de puntuación Elo|Mejor elo]]', argumento['mejor elo']},
{'Ránking', rankingajedrez},
{'Mejor ránking', 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']},
{'Sucesor', argumento['sucesor']},
{'Miembro de', propiedad('P463', conPeriodoDebeExistir), clase='plainlist'},
{tipo='sección',
['titulo'] = 'Premios artísticos', -- Ver la ficha de noble o la ficha de diseñador
estilotitulo = estilotitulo,
{'[[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']},
{'Otros premios', argumento['otros premios']},
},
{tipo='sección',
['titulo'] = 'Carrera deportiva', -- Ver la ficha de noble o la ficha de diseñador
estilotitulo = estilotitulo,
{'Deporte', argumento['deporte']},
},
{'',seccionDesplegable('Títulos y <br> reconocimientos deportivos',argumento['títulos'], frame,estilotitulo)},
-- Los premios pueden ser para varias ocupaciones por lo que se ponen al final
-- Premios, condecoraciones, medallas, distinciones, etc.
{'Distinciones', argumento['premios'] or argumento['Premios'] or
argumento['premio'] or argumento['Premio'] or
argumento['premios2'] or
propiedad('P166', {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = 'P585', ordenar='por fecha',
eliminar1=eliminarpremio,eliminar2=eliminarpremio2,eliminar3=eliminaroscar,
eliminar4=eliminarsebastian}),
clase ='plainlist'}, -- Mostrar las listas sin viñetas
-- Con etiqueta/datos como en las fichas de escritor y artista en vez de como en la ficha de persona
{'Firma', (firma and ('[[Archivo:' .. firma .. '|150px]]'))}, -- 150 px como en la ficha de escritor en vez de 128
{tipo='sección', -- Web
clase ='plainlinks',
titulo ='Web',
estilotitulo = estilotitulo,
{'Sitio web', ModuloURL.enlazar(web)},
{'Facebook', facebook and ('[http://www.facebook.com/' .. facebook .. ' ' .. facebook .. ']')}, -- Ver la plantilla facebook
{'Twitter', twitter and ('[http://www.twitter.com/' .. twitter .. ' ' .. twitter .. ']')}, -- Ver la plantilla twitter
{'Ficha', ModuloFormatoTexto.enVariasLineas({
imdb and ('[http://www.imdb.com/name/' .. imdb .. ' Ficha] en [[Internet Movie Database|IMDb]]') -- Ver la ficha de actor
, catholicHierarchy and ('[http://www.catholic-hierarchy.org/bishop/b' .. catholicHierarchy .. ".html Ficha] en ''catholic-hierarchy.org''") -- Ver la Ficha de líder religioso
})}
},
{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'}
},
{'Fuente biográfica', argumento['fuentebiográfica']},
}
categorias = ''
-- Ahora la categoría se informa en Módulo:Wikidata/Formatos
--if algunaPropiedadEnlazaWikidata then
-- categorias = '[[Categoría:Wikipedia:Páginas con propiedades de Wikidata sin etiqueta]]'
--end
if (fechaNacimiento or lugarNacimiento) and not (fechaFallecimiento or lugarFallecimiento) then
categorias = categorias .. '[[Categoría:Personas vivas]]'
end
--if educacion and almamater then
-- categorias = categorias .. '[[Categoría:Wikipedia:Páginas que tienen informado el campo educación]]'
--end
return ModuloFicha.infobox(Ficha) .. categorias
end
function generarcargo(argumento,numero)
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]..'|40px]]<br />'..argumento['cargo'..numero] end
if argumento['distrito'..numero] then titulo = titulo..'<br /><small>por '..argumento['distrito'..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; font-size:110%',
{'', periodo, estilotitulo = 'background-color:#E6E6FA; font-size:110%; border-top:1px solid;'},
{'Vicegobernador', argumento['vicegobernador'..numero] },
{'[[Presidente]]', argumento['presidente'..numero] },
{'[[Monarca]]', argumento['monarca'..numero] },
{'[[Primer ministro]]', argumento['primerministro'..numero] },
{'[[Gobernador]]', argumento['gobernador'..numero] },
{'[[Jefe de Gobierno]]', argumento['jefe'..numero]},
{'Junto a', argumento['juntoa'..numero] },
{'Nominado por', argumento['nominado'..numero] },
{'Designado por', argumento['designado'..numero] },
{'Gabinete', argumento['gabinete'..numero] },
{'[[Vicepresidente]]', argumento['vicepresidente'..numero] },
{'Viceprimerministro', argumento['viceprimerministro'..numero] },
{'[[Teniente gobernador]]', argumento['teniente'..numero] },
{'Vicealcalde', argumento['vicealcalde'..numero] },
{'Vicejefe de gobierno', argumento['vicejefe'..numero]},
{'[[Canciller]]', argumento['canciller'..numero]},
{'Vicecanciller', argumento['vicecanciller'..numero]},
{'Predecesor', argumento['predecesor'..numero]},
{'Sucesor', argumento['sucesor'..numero]},
{'Compañero de fórmula', argumento['fórmula'..numero]},
{'Oponente/s', argumento['oponentes'..numero]},
{'En el cargo', argumento['enelcargo'..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)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
opciones['propiedad'] = idPropiedad
valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
if valorPropiedad and valorPropiedad:match('%[%[:d:') then
algunaPropiedadEnlazaWikidata = true
end
return valorPropiedad
end
end
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
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 ..';}}')
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)
local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor)
-- Corregir la ocupación.
-- Ejemplos:
-- - "actor/actriz" --> "actor"
-- - "informático/a teórico/a" --> "informático teórico"
if etiquetaOcupacion then
etiquetaOcupacion = etiquetaOcupacion:gsub('([^%s]+)(/[^%s]+)', '%1')
end
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion, opciones)
end
function corregirOcupacion(etiquetaOcupacion)
if not etiquetaOcupacion or not etiquetaOcupacion:find('/') then
return etiquetaOcupacion
end
local palabrasCorregidas={}
local palabraCorregida
for palabra in etiquetaOcupacion:gmatch("[^%s]+") do
palabraCorregida =
palabra:match('^(.+)o/a$') or -- científico/a --> científic
palabra:match('^(.+)/a$') -- escritor/a --> escritor
if palabraCorregida then
table.insert(palabrasCorregidas, palabraCorregida .. 'a')
else
table.insert(palabrasCorregidas,
palabra:match('^.+/(.+)$') or -- actor/actriz
palabra -- de, literatura, infantil
)
end
end
return table.concat(palabrasCorregidas, ' ')
end
function formatoOcupacionFemenino(valor, opciones, frame)
local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor)
return ModuloWikidataFormatos.enlazar(enlaceOcupacion, corregirOcupacion(etiquetaOcupacion), idEntidadOcupacion, opciones)
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 obtenerFacebook()
return obtenerValorCalificativo('P553' -- cuenta en red social
, 'P554' --dirección en red social
, 355) -- Facebook
or propiedad('P2013'); -- Ejemplo: Gillian Flynn
end
function obtenerTwitter()
return obtenerValorCalificativo('P553' -- cuenta en red social
, 'P554' --dirección en red social
, 2002) -- Twitter
end
return z