Módulo:Zona de pruebas/Rojasyesid/Fichadepersona
Este módulo no tiene página de documentación[crear]
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={}
-- 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)
-- Hacer que funcione la función formatBandera y formatoGentilicio
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 datos complejos
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
Entidad = mw.wikibase.getEntityObject() or {}
--if true then
-- return ModuloTablas.tostring(Entidad)
--end
educacion = argumento['educación'] or argumento['educacion'] or propiedad('P512',{ ['calificativo'] = 'P512'})
almamater = argumento['alma máter'] or argumento['alma_mater'] or argumento['alma mater'] or argumento['almamáter']
propiedad('P69', {['enlace']='sí', ['lista'] = 'no ordenada'})
if propiedad('P21') == 'femenino' then
etiquetaAnyosActivo = 'Años activa'
etiquetaConocidoPor = 'Conocida por'
etiquetaInfluencias = 'Influida por'
funcionOcupacion = formatoOcupacionFemenino
else
etiquetaAnyosActivo = 'Años activo'
etiquetaConocidoPor = 'Conocido por'
etiquetaInfluencias = 'Influido por'
funcionOcupacion = formatoOcupacionMasculino
end
area = argumento['área'] or argumento['area'] or argumento['especialidad']
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 solo se obtiene 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".
-- Pendiente averiguar si en algún artículo se informan los campos de área y de ocupación a la vez.
-- Si es así mostrar solo uno de los dos.
ocupacion = argumento['ocupación'] or argumento['Ocupación'] or (not area and
propiedad('P106', {['formatoTexto'] = 'mayúscula', ['valor-función']=funcionOcupacion, ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo,eliminar='actor'}))
or argumento['profesión']
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 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
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 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 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')
web = propiedad('P856') or
argumento['web'] or argumento['página web'] or argumento['website'] or argumento['sitio web'] or argumento['sitioweb']
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')
-- 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]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 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
--Pendiente por poner el estilo de POLITICO!
if contadorocupaciones~=2 and ocupacionOArea and (ocupacionOArea:find('[Pp]olítico')) then
contadorocupaciones=contadorocupaciones+1
tipocabecera = 'libro'
estilotitulo = 'background-color:#4c6099;color:#FFF'
end
if contadorocupaciones~=2 and ocupacionOArea and ocupacionOArea:find('[Pp]eriodista') then
contadorocupaciones=contadorocupaciones+1
tipocabecera = 'revista'
estilotitulo = 'background-color:#ED8;color:#FFF'
end
if contadorocupaciones~=2 and ocupacionOArea and ocupacionOArea:find('[Dd]iseñador') then
contadorocupaciones=contadorocupaciones+1
estilotitulo = 'background-color:#ccccff'
end
if contadorocupaciones~=2 and ocupacionOArea and (ocupacionOArea:find('[Aa]ctor') or ocupacionOArea:find('[Aa]ctriz')) then
contadorocupaciones=contadorocupaciones+1
tipocabecera = 'cine'
estilotitulo = 'background-color:#f9e999'
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
eliminarpremio='lobo de Oro'
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['descripción'] or
argumento['pie de foto'] or argumento['piedefoto'] or
argumento['textoimagen'] or argumento['TextoImagen'] or argumento['texto_imagen'] or
argumento['pie de foto'] or argumento['pieimagen']
,
-- 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']
},
{'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
{'Residencia', argumento['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'},
{'Etnia', propiedad('P172') or
argumento['etnia'],
clase='category'},
{'Creencias religiosas', propiedad('P140', enMayusculas) or
argumento['religión'] or
argumento['creencias']},
{'Lengua materna', argumento['lengua_materna'] or argumento['Lengua_materna'] or propiedad('P103', enMayusculas)},
},
{tipo='sección',
-- Educación
{'Educación', educacion},
{'Alma máter', almamater, clase='plainlist'},
{'Posgrado', argumento['posgrado']}
},
{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'] = 'Información profesional',
estilotitulo = estilotitulo,
{'Ocupación', ocupacion, clase='role'},
{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
{'Área', area or
propiedad('P101', enMayusculas)}, -- Campo de trabajo.
{'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)},
},
{'Empresa', argumento['empresa']},
{'Salario', argumento['salario']},
{'Patrimonio', argumento['patrimonio'] or argumento['fortuna']},
{'Tratamiento', argumento['tratamiento']},
{'Altura', argumento['altura']},
{'Peso', argumento['peso']},
{etiquetaConocidoPor, argumento['conocido'] or
argumento['conocido por']},
{'Título', argumento['título'] or -- <!-- Su majestad, primera dama, etc -->
argumento['titulo']},
{'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']},
{'Partido político', argumento['partido político'] or argumento['partido'] or propiedad('P102')},
{'Otras afiliaciones políticas', argumento['afiliaciones'] or propiedad('P1416')},
{'Cargos ocupados', propiedad('P39', conPeriodo), clase='plainlist'}, -- políticos o en empresas
{'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',eliminar=eliminarpremio}),
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='' end --para casos donde hay reelección
if 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
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 propiedad1(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
tipov=''
if Entidad.claims[idPropiedad][1]['mainsnak']['datavalue']['value']['numeric-id'] then
tipov=Entidad.claims[idPropiedad][1]['mainsnak']['datavalue']['value']['numeric-id']
end
--if type(v)=='string' then
--tipov=tipov..'indice'..k..'valor'..v .. '<br>'
-- else
-- if type(v
-- for klave, valor in pairs(Entidad.claims[idPropiedad][v]) do
-- if type(valor)=='string' then
-- tipov = tipov.. '<br>'..k..v
-- end
-- end
-- end
-- end
--if type(Entidad.claims[idPropiedad]) then
-- tipov=type(Entidad.claims[idPropiedad])
--end
return valorpropiedad
end
end
function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
opciones['propiedad'] = idPropiedad
salida = ''
tipov=''
declaracion = Entidad.claims[idPropiedad]
valorPropiedad = ModuloWikidata.getPropiedad(opciones,declaracion)
if opciones.eliminar5 then
for k, v in pairs(valorPropiedad) do
tipov= tipov..'<br>'..k
if type(v) == 'string' or type(v) == 'number' then
tipov=tipov..': '..v
end
if type(v) == 'table' then
tipov= tipov..'{ PRIMER NIVEL<br>'
for clave,valor in pairs(valorPropiedad[k]) do
tipov= tipov..'<br>'..clave
if type(valor) == 'string' or type(valor) == 'number' then
tipov=tipov..': '..valor
end
if type(valor) == 'table' then
tipov= tipov..'{SEGUNDO NIVEL<br>'
for clave1,valor1 in pairs(valorPropiedad[k][clave]) do
tipov= tipov..'<br>'..clave1
if type(valor1) == 'string' or type(valor1) == 'number' then
tipov=tipov..': '..valor1
end
if type(valor1) == 'table' then
tipov= tipov..'{TERCER NIVEL<br>'
for clave2,valor2 in pairs(valorPropiedad[k][clave][clave1]) do
tipov= tipov..'<br>'..clave2
if type(valor2) == 'string' or type(valor2) == 'number' then
tipov=tipov..': '.. valor2
end
if type(valor2) == 'table' then
tipov= tipov..'{ CUARTO NIVEL<br>'
for clave3,valor3 in pairs(valorPropiedad[k][clave][clave1][clave2]) do
tipov= tipov..'<br>'..clave3
if type(valor3) == 'string' or type(valor3) == 'number' then
tipov=tipov..': '.. valor3
end
end
tipov=tipov..'<br>SALI DEL CUARTO NIVEL}'
end
end
tipov=tipov..'<br> SALI DEL TERCER NIVEL}'
end
end
tipov=tipov..'<br> SALI DEL SEGUNDO NIVEL<br>}'
end
end
tipov=tipov..'<br> SALI DEL PRIMER NIVEL<br>}'
end
end
return tipov
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