Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Portada
mantenimiento
Páginas nuevas
Página aleatoria
Cambios recientes
Páginas especiales
Ayuda
Comunidad
Portal de la comunidad
Centro de reportes
Tablón de solicitudes
Tutorial de edición
Políticas
Buscar
Buscar
Apariencia
Crear una cuenta
Acceder
Herramientas personales
Crear una cuenta
Acceder
Páginas para editores desconectados
más información
Contribuciones
Discusión
Edición de «
Módulo:Ficha de persona
»
Módulo
Discusión
English
Leer
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar código
Ver historial
Actualizar
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Enlace corto
En otros proyectos
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
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í'} local enMayusculasO = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o ', ['linkback']='sí'} local enMayusculasSinEnlazar = {['formatoTexto'] = 'mayúscula', ['linkback']='sí', ['enlace']='no'} local enMayusculasOSinEnlazar = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o ', ['linkback']='sí', ['enlace']='no'} local listaNoOrdenada = {['lista'] = 'no ordenada', ['linkback']='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í'} local conPeriodo = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = formatoPeriodo, ordenar='por fecha', ['linkback']='sí'} local conPeriodoDebeExistir = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = formatoPeriodo, ordenar='por fecha', ['debeExistir'] = 'sí', ['linkback']='sí'} local sinEnlazar = {['enlace']='no', ['linkback']='sí'} local sinLapiz = {} local normal = {['linkback']='sí'} -- Formatos según el tipo de cabecera local formatos={ ['por defecto'] = {['estiloTituloFicha'] = 'background-color:#8DB1C3;color:#000'}, ['inherit'] = {['estiloTituloFicha'] = 'background-color:#EAEAFE;color:#000'}, --['actor'] = {['estiloTituloFicha'] = ''}, ['ajedrecista'] = {['estiloTituloFicha'] = 'background-color:#d38d47;color:#FFF'}, ['artista'] = {['estiloTituloFicha'] = 'background-color:#8DB1C3;color:#000'}, ['astronauta'] = {['estiloTituloFicha'] = 'background-color:transparent;'}, ['autoridad'] = {['estiloTituloFicha'] = 'background-color:transparent;', ['estiloTituloSecciones'] ='background-color:#EAEAFE;'}, ['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 and ( mw.ustring.match(gender, 'femenino') or mw.ustring.match(gender, 'mujer') ) 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}) 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}) fallecimiento = enVariasLineas({ argumento['fecha de fallecimiento'] or (obtenerDatosWikidata and entreParentesis(propiedad('P570', enMayusculasOSinEnlazar), obtenerEdadWikidata('P570'))), lugarFallecimiento }) if fallecimiento then desaparicion = enVariasLineas({ argumento['fecha de desaparición'] or propiedad('P746', enMayusculasOSinEnlazar), lugarDesaparicion }) else desaparicion = enVariasLineas({ argumento['fecha de desaparición'] or (obtenerDatosWikidata and entreParentesis(propiedad('P746', enMayusculasOSinEnlazar), obtenerEdadWikidata('P746'))), argumento['lugar de desaparición'] }) end if fallecimiento or desaparicion then nacimiento = enVariasLineas({ argumento['fecha de nacimiento'] or propiedad('P569', enMayusculasOSinEnlazar), lugarNacimiento }) else nacimiento = enVariasLineas({ argumento['fecha de nacimiento'] or (obtenerDatosWikidata and entreParentesis(propiedad('P569', enMayusculasOSinEnlazar), 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, ['uno'] = 'sí'}) or '' if firma and firma ~= '' then firma = '[[Archivo:' .. firma .. '|175x80px|class=skin-invert]]' 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 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í'}) 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í', ['formatoTexto'] = 'mayúscula'}), 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', argumento['familia'] or 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', {['enlace'] = 'no'})}, {'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', ['titulo'] = 'Navegación', estilotitulo = estiloTituloSecciones, {'Nombre real', argumento['nombre real']}, {'Canal', argumento['canal']}, {'Nacimiento', argumento['nacimiento']}, {'Nacionalidad', argumento['nacionalidad']}, {'Residencia', argumento['residencia']}, {'Redes sociales', argumento['redes']}, {'Clasificación', argumento['clasificación']}, {'Suscriptores', argumento['suscriptores']}, {'Vídeos', argumento['videos']}, {'Inicio', argumento['inicio']}, {'Estado', argumento['estado']}, {'Afiliados', argumento['afiliados']}, {'Premios', argumento['premios']}, {'Primer vídeo', argumento['primer video'] or argumento['primer vídeo']}, {'Vídeo popular', argumento['video popular'] or argumento['vídeo popular']}, }, ['youtuber'] = { ['estiloTituloFicha'] = 'background:#c40000;color:#fff;text-shadow:none;' }, -- 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, 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')}, --{'', 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í', ['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'] }, }, } if filterByOccupation( { 'Q931260', -- asesino 'Q484188', -- asesino en serie 'Q1154323', -- asesino relámpago 'Q2159907', -- criminal 'Q14886050', -- terrorista 'Q22962951', -- violador 'Q26267537', -- violador en serie }, { argumento['cargos criminales'], argumento['condena'], argumento['situación penal'], argumento['víctimas'], } ) then 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 table_merge(Ficha, { {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}, } }) end table_merge(Ficha, { {tipo='sección', titulo ='Firma', estilotitulo = estiloTituloSecciones, {'', 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'} }, entidad = argumento['id'], -- para el enlace final a wikidata }) categorias = {} 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 table_merge(t1, t2) for k,v in ipairs(t2) do if type(k) == 'string' then t1[k] = v else table.insert(t1, v) end end return t1 end function filterByOccupation( wikidataOccupations, localArguments ) if argumento['wikidata'] ~= 'no' then local id = argumento['id'] or mw.wikibase.getEntityIdForCurrentPage() if mw.wikibase.isValidEntityId( tostring( id ) ) then local wd = mw.wikibase.getAllStatements(id, 'P106') -- Occupation for k,v in pairs(wd) do local oc = elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'id') for i,j in pairs( wikidataOccupations ) do if i == ec then return true end end end end end for k,v in pairs(localArguments) do if v and v ~= 'no' then return true end end return false 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:#EAEAFE;', {'', 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 opciones.rangoMayor = 'sí' -- evitar tomar valores deprecados 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:#000; 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' ] = 'poetisa', ['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 and pieDeImagen.datavalue and pieDeImagen.datavalue.value and 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
Resumen:
Ten en cuenta que todas las contribuciones a Netxipedia se consideran publicadas bajo la Creative Commons Atribución-CompartirIgual (véase
Netxipedia:Derechos de autor
para más información). Si no deseas que las modifiquen sin limitaciones y las distribuyan libremente, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre.
¡No uses textos con copyright sin permiso!
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Plantillas usadas en esta página:
Plantilla:Ep
(
editar
)
Plantilla:Tl
(
editar
)
Módulo:Ficha de persona/doc
(
editar
)
Buscar
Buscar
Edición de «
Módulo:Ficha de persona
»
Añadir tema