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 propicedades posibles
local etiqueta
-- Módulos y funciones externas
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')
local ModuloIdentificadores = require('Módulo:Identificadores')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local formatoObraAnyo = ModuloWikidataFormatos.formatoObraAgnyo
local ModuloWikidata = require('Module:Wikidata')
local addLinkbackWikidata = ModuloWikidata.addLinkback
local categorizarWikidata = ModuloWikidata.categorizar
local formatoIdEntidad = ModuloWikidata.formatoIdEntidad
local getPropiedadWikidata= ModuloWikidata.getPropiedad
local ModuloTablas = require('Module:Tablas')
local elementoTabla = ModuloTablas.elemento
local enTabla = ModuloTablas.en
local insertarEn = ModuloTablas.insertar
local ModuloFormatoTexto = require('Módulo:Formato texto')
local enlazarTexto = ModuloFormatoTexto.enlazar
local enVariasLineasTexto = ModuloFormatoTexto.enVariasLineas
local sinBandera = require('Módulo:Bandera').sinBandera
-- Constantes
local debeExistir = {['debeExistir'] = 'sí', ['formatoTexto'] = 'mayúscula', ['linkback']='sí'}
local enMayusculas = {['formatoTexto'] = 'mayúscula', ['linkback']='sí'}
local enlazar = {['enlace']='sí', ['linkback']='sí'}
local normal = {['linkback']='sí'}
local listaNoOrdenadaEnlazada = {['enlace']='sí', ['lista'] = 'no ordenada', ['linkback']='sí'}
local categoriasGeneros2 = {
[693 ] = 'Fábulas'
, [1072723] = 'Libros de viajes' -- literatura de viajes
, [1164267] = 'Libros de viajes' -- libro de viajes
, [131539 ] = 'Obras infantiles' -- literatura infantil
, [995600 ] = 'Libros de divulgación científica' -- divulgación científica
, [254554 ] = 'Álbumes ilustrados' -- álbum ilustrado
}
local tablaGeneros={ -- Tabla de géneros exceptuando los subgéneros.
'Q8261' -- Novela
, 'Q482' -- Poesía
, 'Q49084' -- Cuento
, 'Q11635' -- Teatro
, 'Q1279564' -- Colección de cuentos
, 'Q37484' -- Epopeyas
, 'Q213051' -- No ficción
}
local categoriasGenerosNovelas = {
[3056541] = 'Novelas autobiográficas'
,[4184 ] = 'Novelas autobiográficas' --autobiografía
,[908667 ] = 'Novelas bélicas'
,[4914883] = 'Novelas biográficas'
,[174526 ] = 'Novelas ciberpunk'
,[26228231] = 'Novelas ciberpunk' -- novela ciberpunk
,[1077883] = 'Novelas ciberpunk' -- biopunk
,[26228228] = 'Novelas ciberpunk' -- novela biopunk
,[1341831] = 'Novelas ciberpunk' -- postciberpunk
,[27022710] = 'Novelas ciberpunk' -- novela postciberpunk
,[223945 ] = 'Novelas de aprendizaje'
,[1312571] = 'Novelas de aprendizaje' -- novela de desarrollo
,[319226 ] = 'Novelas de aventuras'
,[1436734] = 'Novelas de aventuras' -- aventura. FALTA corregir el enlace par que enlace a novela de aventuras.
,[24925 ] = 'Novelas de ciencia ficción'
,[12132683]= 'Novelas de ciencia ficción'
,[3238422]= 'Novelas de ciencia ficción' -- literatura de ciencia ficción
,[905770 ] = 'Novelas de ciencia ficción' -- ciencia ficción blanda
,[725757 ] = 'Ciencia ficción dura' -- ciencia ficción dura
,[2435402] = 'Novelas de ciencia ficción feministas' -- ciencia ficción feminista
,[2561390] = 'Novelas de humor'
,[40831 ] = 'Novelas de humor' -- Comedia
,[6585139] = 'Novelas de misterio'
,[182015 ] = 'Novelas de suspenso'
,[193606 ] = 'Novelas de terror' -- literatura de terror
,[16575965 ] = 'Novelas de terror' -- ficción de terror
,[20667180] = 'Novelas de terror' -- novela de terror
,[1425557] = 'Novelas de vampiros'
,[10453828] = 'Novelas de viajes en el tiempo'-- novela de viajes en el tiempo
,[253732 ] = 'Novelas de viajes en el tiempo' -- Viaje en el tiempo en la ficción
,[182154 ] = 'Novelas de viajes en el tiempo' -- Viaje a través del tiempo
,[180774 ] = 'Novelas distópicas' -- Distopía
,[20443047] = 'Novelas distópicas' -- literatura distópica
,[26928598 ] = 'Novelas distópicas' -- novela distópica
,[25372 ] = 'Novelas dramáticas'
,[465821 ] = 'Novelas epistolares'
,[747483 ] = 'Novelas eróticas' -- literatura erótica
,[11452132 ] = 'Novelas eróticas' -- novela erótica
,[1426213] = 'Novelas de espionaje'
,[11825887]= 'Novelas fantásticas' -- novela fantástica
,[10992055]= 'Novelas fantásticas' -- novela fantástica
,[132311 ] = 'Novelas fantásticas' -- Género fantástico
,[1057172] = 'Novelas fantásticas' -- Literatura fantástica
,[603291 ] = 'Novelas fantásticas' -- fantasía histórica
,[794912 ] = 'Novelas fantásticas' -- dark fantasy/fantasía oscura
,[2625243] = 'Novelas fantásticas' -- fantasía heroica
,[2016518] = 'Novelas filosóficas'
,[20669641]= 'Novelas góticas' -- Ficción gótica
,[192782 ] = 'Novelas góticas' -- Narrativa gótica
,[276709 ] = 'Novelas góticas' -- Gótico sureño
,[1196408] = 'Novelas históricas' -- Ficción histórica
,[192239 ] = 'Novelas históricas'
,[131539] = 'Novelas infantiles' -- Literatura infantil
,[21615367] = 'Novelas infantiles' -- novela infantil
,[11825892] = 'Novelas juveniles' -- novela juvenil
,[1233720] = 'Novelas juveniles' -- Literatura juvenil
,[1940294] = 'Novela negra'
,[1619888] = 'Novelas pastoriles'
,[208505 ] = 'Novelas policíacas' -- Novela policíaca
,[186424 ] = 'Novelas policíacas' -- El detective de ficción
,[5937792 ] = 'Novelas policíacas' -- Género policíaco
,[26906554] = 'Novelas posapocalípticas' -- novela posapocalíptica
,[197949] = 'Novelas posapocalípticas' -- ficción posapocalíptica
,[113013 ] = 'Novelas posmodernas' -- Literatura posmoderna
,[286328 ] = 'Novelas psicológicas'
,[147516] = 'Novelas de realismo mágico'
,[858330 ] = 'Novelas románticas'
,[6045975] = 'Novelas satíricas' -- novela satírica
,[128758 ] = 'Novelas satíricas' -- Sátira
,[7225114] = 'Novelas satíricas' -- Sátira política
,[223685] = 'Novelas steampunk' -- steampunk
,[27020789] = 'Novelas steampunk' -- novela steampunk
,[3440959] = 'Novelas de suspenso' -- Novela de suspense
,[2490520] = 'Novelas de thriller legal' -- thriller legal
,[590103] = 'Novelas de suspenso psicológico' -- suspense psicológico, thriller psicológico
,[580850 ] = 'Novelas tecno-thriller' -- tecno-thriller
,[224989 ] = 'Novelas ucrónicas'
,[16681629 ] = 'Novelas ucrónicas' --literatura ucrónica
,[26225470 ] = 'Novelas ucrónicas' --Novela ucrónica
,[667661] = 'Novelas del Realismo' --realismo literario
,[3940779] = 'Novelas del Realismo' --novela realista
,[26987767] = 'Novelas feministas'
,[26987750] = 'Novelas feministas' --literatura feminista
,[7252] = 'Novelas feministas' --feminismo
}
local categoriasTemasNovelas = {
[2763] = 'Novelas sobre el Holocausto'
, [180046] = 'Novelas de exploración espacial' -- exploración espacial
, [362 ] = 'Novelas de la Segunda Guerra Mundial' -- Segunda Guerra Mundial
, [10453828] = 'Novelas de viajes en el tiempo'-- novela de viajes en el tiempo
, [253732] = 'Novelas de viajes en el tiempo' --viaje en el tiempo en la ficción
, [182154] = 'Novelas de viajes en el tiempo' --viaje a través del tiempo
, [10859 ] = 'Novelas sobre la guerra civil española'
}
function z.Ficha(frame)
-- Hacer que funcione la función formatBandera
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 {}
--if true then return ModuloTablas.tostring(Entidad) end
corregirIdiomaWikidata(Entidad, 'P364') -- Obsoleto
corregirIdiomaWikidata(Entidad, 'P407')
local generoWikidata, subgeneroWikidata, temaWikidata = obtenerGeneroWikidata()
genero = argumento['género'] or
argumento['genero'] or
argumento['Género'] or
generoWikidata
subgenero = argumento['subgénero'] or
argumento['subgenero'] or
argumento['Subgénero'] or
subgeneroWikidata
-- Comprobar que la instancia es una serie o un libro
local declaracionesInstancias = elementoTabla(Entidad, 'claims', 'P31')
local declaracionesFormas = elementoTabla(Entidad, 'claims', 'P7937')
local identificadorInstancia, esUnaSerie, esUnLibro, esUnLibroDeCuentos
if declaracionesInstancias then
for k,v in pairs(declaracionesInstancias) do
identificadorInstancia = elementoTabla(v, 'mainsnak', 'datavalue','value','id')
if identificadorInstancia == 'Q277759' or -- serie de libros
identificadorInstancia == 'Q2475679' or -- ciclo literario. Ekumen
identificadorInstancia == 'Q1667921' then -- serie de novelas
esUnaSerie = true
end
if identificadorInstancia == 'Q571' or -- libro
identificadorInstancia == 'Q12106333' then -- poemario
esUnLibro = true
end
if identificadorInstancia == 'Q1279564' or -- libro de cuentos
identificadorInstancia == 'Q27560760' then -- libro de cuentos de hadas
esUnLibroDeCuentos = true
esUnLibro = true
end
end
end
if declaracionesFormas then
for k,v in pairs(declaracionesFormas) do
identificadorForma = elementoTabla(v, 'mainsnak', 'datavalue','value','id')
if identificadorForma == 'Q277759' or -- serie de libros
identificadorForma == 'Q2475679' or -- ciclo literario. Ekumen
identificadorForma == 'Q1667921' then -- serie de novelas
esUnaSerie = true
end
if identificadorForma == 'Q571' or -- libro
identificadorForma == 'Q12106333' then -- poemario
esUnLibro = true
end
if identificadorForma == 'Q1279564' or -- libro de cuentos
identificadorForma == 'Q27560760' then -- libro de cuentos de hadas
esUnLibroDeCuentos = true
esUnLibro = true
end
end
end
if esUnaSerie then
ColorFondoTitulos = '#C63A3A'
ColorTitulos = '#ffffff' -- blanco
ColorFondoSubtitulo = '#F49494'
elseif not genero then
ColorFondoTitulos = 'LightSteelBlue'
ColorTitulos = '#000'
ColorFondoSubtitulo = '#d8e2ee'
elseif genero:find('[Rr]elato') or
genero:find('[Cc]uento') or
genero:find('[Ll]eyenda') or
genero:find('[Aa]ntología') then
ColorFondoTitulos = 'LightSalmon'
ColorTitulos = '#000'
ColorFondoSubtitulo = '#f9d9cb'
elseif genero:find('[Tt]eatro') then
ColorFondoTitulos = '#FBCEB1'
ColorTitulos = '#000'
ColorFondoSubtitulo = '#f9d9cb'
elseif genero:find('didáctico') or
genero:find('[Ee]nsayo') or
genero:find('[Dd]ivulgación') or
genero:find('[Cc]rítica') or
genero:find('[Tt]ratado') or
genero:find('[Cc]rónica') then
ColorFondoTitulos = 'NavajoWhite'
ColorTitulos = '#000'
ColorFondoSubtitulo = '#FBE7C9'
elseif genero:find('[Pp]oesía') or
genero:find('[Ee]popeya') or
genero:find('[Ll]írico') or
genero:find('[Ll]írica') or
genero:find('[Pp]oema') then
ColorFondoTitulos = 'darkseagreen'
ColorTitulos = '#000'
ColorFondoSubtitulo = '#afdeaf'
else
ColorFondoTitulos = 'LightSteelBlue'
ColorTitulos = '#000'
ColorFondoSubtitulo = '#d8e2ee'
end
Autor = argumento['autor'] or
argumento['autores'] or
argumento['Autor'] or
argumento['Autores'] or
propiedad('P50',{['enlace']='sí',
['calificativo'] = 'P742' -- seudónimo
, ['linkback']='sí'
})
if Autor and argumento['Acotaciones al autor'] then
Autor = Autor .. '<br /><small>' .. argumento['Acotaciones al autor'] .. '</small>'
end
if argumento['publicación original'] or argumento['tipo original'] or
argumento['tipo de publicación original'] or argumento['editorial original'] or
argumento['ilustrador original'] or argumento['ciudad original'] or
argumento['país original'] or argumento['fecha original'] or
argumento['formato original'] or argumento['páginas original'] or
argumento['Año original'] or argumento['Año de publicación original'] or
argumento['Ilustrador original'] or argumento['Ilustrador de la publicación original'] or
argumento['Artista de cubierta original'] or argumento['Artista de cubierta de la publicación original'] or
argumento['Editorial original'] or argumento['Editorial de publicación original'] or
argumento['Ciudad original'] or argumento['Ciudad de publicación original'] or
argumento['País original'] or argumento['País de publicación original'] or
argumento['Formato original'] or
argumento['Páginas original']
then
EdicionOriginal = true
end
if argumento['Título traducción'] or argumento['Título de la traducción'] or
argumento['Año traducción'] or argumento['Año de publicación de la traducción'] or
argumento['Traductor'] or argumento['traductor'] or
argumento['Ilustrador traducción'] or argumento['Ilustrador de la traducción'] or
argumento['Artista de cubierta traducción'] or argumento['Artista de cubierta de la traducción'] or
argumento['Editorial traducción'] or argumento['Editorial de la traducción'] or
argumento['Ciudad traducción'] or argumento['Ciudad de publicación de la traducción'] or
argumento['País traducción'] or argumento['País de publicación de la traducción'] or
argumento['Formato traducción'] or argumento['Formato de la traducción'] or
argumento['Páginas traducción'] or argumento['Número de páginas de la traducción']
then
EdicionTraduccion = true
end
if EdicionOriginal or EdicionTraduccion then
IdiomaOriginal =
enlazarIdioma(
argumento['lengua'] or
argumento['idioma'] or
argumento['idioma original'] or
argumento['Idioma original'], 'no') or
propiedad('P407',{['enlace']='sí', ['linkback']='sí'}) or
propiedad('P364',{['enlace']='sí', ['linkback']='sí'}) -- Obsoleto
IlustradorOriginal = argumento['ilustrador original'] or
argumento['Ilustrador original'] or
argumento['Ilustrador de la publicación original'] or
propiedad('P110',enlazar)
ArtistaOriginal = argumento['artista original'] or
argumento['Artista de cubierta original'] or
argumento['Artista de cubierta de la publicación original'] or
propiedad('P736',enlazar)
PublicacionOriginal = argumento['Publicación original'] or
argumento['publicación original'] or
propiedad('P1433',enlazar)
TipoPublicacionOriginal = argumento['Tipo de publicación original'] or
argumento['tipo de publicación original'] or
argumento['tipo original']
EditorialOriginal = argumento['editorial original'] or
argumento['Editorial original'] or
argumento['Editorial de publicación original'] or
propiedad('P123',listaNoOrdenadaEnlazada)
LugarPublicacionOriginal = argumento['ciudad original'] or
argumento['Ciudad original'] or
argumento['Ciudad de publicación original'] or
propiedad('P291')
PaisOriginal = sinBandera(argumento['país original'] or
argumento['País original'] or
argumento['País de publicación original']) or
propiedad('P495')
AnyoOriginal = argumento['Año original'] or
argumento['Año de publicación original']
FechaOriginal = argumento['Fecha original'] or
argumento['fecha original'] or
AnyoOriginal or
propiedad('P577', {['formatoTexto'] = 'mayúscula', ['linkback']='sí',
['calificativo'] = 'P437', -- distribución
['lista'] = 'no ordenada',
['enlace'] = 'no'
})
FormatoOriginal = argumento['formato original'] or
argumento['Formato original'] or
propiedad('P437', enMayusculas) -- Distribución (cartoné, etc)
PaginasOriginal = argumento['páginas original'] or
argumento['Número de páginas original'] or
propiedad('P1104')
PremiosOriginal = argumento['Premios'] or
argumento['premios'] or
propiedad('P166', {
['lista'] = 'no ordenada',
['valor-módulo'] = 'Wikidata/Formato premio',
['valor-función'] = 'formatoPremio',
['calificativo'] = 'P585', -- Fecha de ocurrencia
['enlace'] = 'sí',
['ordenar'] = 'por fecha',
['linkback']='sí'})
Artista = argumento['artista_cubierta'] or
argumento['artista'] or
argumento['Artista de cubierta traducción'] or
argumento['Artista de cubierta de la traducción']
Ilustrador = argumento['ilustrador'] or
argumento['Ilustrador traducción'] or
argumento['Ilustrador de la traducción']
Editorial = argumento['editorial'] or
argumento['Editorial traducción'] or
argumento['Editorial de la traducción']
LugarPublicacion = argumento['ciudad'] or
argumento['Ciudad traducción'] or
argumento['Ciudad de publicación de la traducción']
Publicacion = argumento['publicación']
Pais = sinBandera(argumento['país'] or
argumento['pais'] or
argumento['País traducción'] or
argumento['País de publicación de la traducción'])
Fecha = argumento['fecha_publicación'] or
argumento['fecha publicacion'] or
argumento['fecha'] or
argumento['Año traducción'] or
argumento['Año de publicación de la traducción']
Paginas = argumento['páginas'] or
argumento['Páginas traducción'] or
argumento['Páginas de la traducción']
if IdiomaOriginal then
if IdiomaOriginal:find('[e]spañol') or IdiomaOriginal:find('[Cc]astellano') then
WikisourceOriginal = obtenerWikisource('español')
else
WikisourceOriginal = obtenerWikisource(IdiomaOriginal)
Wikisource = obtenerWikisource('español')
end
end
else
IdiomaOriginal = enlazarIdioma(argumento['lengua'] or
argumento['idioma'] or
argumento['idioma original'], 'sí') or
propiedad('P407',enMayusculas) or
propiedad('P364',enMayusculas) -- Obsoleto
Artista = argumento['artista_cubierta'] or
argumento['artista'] or
propiedad('P736',enlazar)
Ilustrador = argumento['ilustrador'] or propiedad('P110',enlazar)
Editorial = argumento['editorial'] or propiedad('P123',listaNoOrdenadaEnlazada)
LugarPublicacion = argumento['ciudad'] or propiedad('P291',enlazar)
Publicacion = argumento['publicación'] or propiedad('P1433',enlazar)
Pais = sinBandera(argumento['país'] or argumento['pais']) or propiedad('P495')
Fecha = argumento['fecha_publicación'] or
argumento['fecha publicacion'] or
argumento['fecha'] or
propiedad('P577', {['formatoTexto'] = 'mayúscula', ['enlace']='no', ['linkback']='sí'})
Formato = argumento['formato'] or
argumento['tipo_medio'] or
argumento['Formato traducción'] or
argumento['Formato de la traducción'] or
propiedad('P437', enMayusculas) -- Distribución (cartoné, etc)
Paginas = argumento['páginas'] or argumento['paginas'] or propiedad('P1104')
Premios = argumento['premios'] or
propiedad('P166', {
['lista'] = 'no ordenada',
['valor-módulo'] = 'Wikidata/Formato premio',
['valor-función'] = 'formatoPremio',
['calificativo'] = 'P585', -- Fecha de ocurrencia
['enlace'] = 'sí',
['ordenar'] = 'por fecha',
['linkback']='sí'})
if IdiomaOriginal and (IdiomaOriginal:find('[Ee]spañol') or IdiomaOriginal:find('[Cc]astellano')) then
-- Libro en español
Wikisource = obtenerWikisource('español')
elseif IdiomaOriginal then
-- Libro no en español sin datos de la edición en español
WikisourceOriginal = obtenerWikisource(IdiomaOriginal)
Wikisource = obtenerWikisource('español')
end
end
-- Titulo --> Título del libro en español
-- TituloOriginal --> Título original del libro si no está en español
etiquetaWikidata = obtenerEtiquetaWikidata()
if IdiomaOriginal and (IdiomaOriginal:find('[Ee]spañol') or IdiomaOriginal:find('[Cc]astellano')) then
--Libro escrito en español
Titulo = argumento['título original'] or
argumento['título_orig'] or
argumento['titulo_orig'] or
argumento['título orig'] or
argumento['Título original'] or
argumento['título'] or
argumento['nombre'] or
propiedad('P1476') or
etiquetaWikidata or
ModuloPaginas.nombrePagina({desambiguar='sí'})
else
--Libro no escrito en español
-- o del que se desconoce el idioma
TituloOriginal = argumento['título original'] or
argumento['título_orig'] or
argumento['titulo_orig'] or
argumento['título orig'] or
argumento['Título original'] or
obtenerTitulo()
Titulo = argumento['título'] or
argumento['nombre'] or
etiquetaWikidata or
ModuloPaginas.nombrePagina({desambiguar='sí'})
end
local Contenido = argumento['Contenido'] or argumento['contenido']
if Contenido and (Contenido == '' or Contenido == 'no') then
Contenido = ''
elseif not Contenido then
Contenido = propiedad('P527',{['enlace']='sí', ['lista'] = 'no ordenada', ['valor-función'] = formatoObraAnyo,})
end
local FichaLibro = {
entidad = argumento.id,
titulo = Titulo,
clasetitulo = 'libro',
estilotitulo = 'background-color:' .. ColorFondoTitulos .. '; color:' .. ColorTitulos .. '; font-style:italic',
subtitulo = Autor and '<small>de</small> ' .. "'''" .. Autor .. "'''",
estilosubtitulo = 'font-size:105%; background-color:' .. ColorFondoSubtitulo .. ';',
estiloseccion = 'background-color:' .. ColorFondoTitulos .. '; color:' .. ColorTitulos .. ';',
estiloetiqueta = 'width:35%',
estilodatos = 'width:65%',
imagen = argumento['imagen'] or argumento['Imagen'] or propiedad('P18', {uno='sí'}),
['tamañoimagen']= argumento['Tamaño de imagen'] or '220px', -- FALTA {{px|{{{Tamaño de imagen}}}}}
pie = argumento['texto_imagen'] or argumento['texto imagen'] or
argumento['pie de imagen'] or argumento['Pie de imagen'],
estilopie = 'font-size:88%',
{'Editor(es)', argumento['Editor'] or
argumento['editor'] or
argumento['Editores'] or
argumento['editores'] or
propiedad('P98')
},
{'Fotografía', argumento['Fotografía'] or
argumento['fotografía']},
{'Género' , genero},
{'Subgénero' , subgenero},
{'Basado en' , propiedad('P144', {['formatoTexto'] = 'cursivas',['enlace']='sí', ['debeExistir'] = 'sí',['linkback']='sí'})},
{'Tema(s)' , argumento['tema'] or
argumento['Tema'] or
temaWikidata
},
{'Universo ficticio', propiedad('P1434', debeExistir)},
{tipo='sección',
-- El título de la sección solo se muestra si hay datos de las dos ediciones.
titulo = (EdicionOriginal or EdicionTraduccion) and IdiomaOriginal and 'Edición original en ' .. IdiomaOriginal,
{'Idioma', not EdicionOriginal and not EdicionTraduccion and IdiomaOriginal},
{'Título original' , TituloOriginal,
estilodatos='font-style:italic'},
{'Ilustrador', IlustradorOriginal}, -- FALTA si enlazar
{'Cubierta' , ArtistaOriginal},
{'Publicado en' , PublicacionOriginal
, estilodatos='font-style:italic'},
{'Tipo de publicación' , TipoPublicacionOriginal},
{'Editorial' , EditorialOriginal, clase='plainlist'},
{'Ciudad' , LugarPublicacionOriginal},
{'País' , PaisOriginal},
{'Fecha de publicación', FechaOriginal, clase='plainlist'},
{'Formato' , FormatoOriginal},
{'Páginas' , PaginasOriginal},
{'Premios' , PremiosOriginal, clase='plainlist'},
{'Texto original' , WikisourceOriginal}
},
{tipo='sección',
-- El título de la sección solo se muestra si hay datos de las dos ediciones.
titulo = (EdicionOriginal or EdicionTraduccion) and 'Edición traducida al [[idioma español|español]]',
{'Título' ,argumento['Título traducción'] or
argumento['Título de la traducción'], estilodatos='font-style:italic'},
{'Traducido por' , argumento['traductor'] or argumento['Traductor']},
{'Adaptación' , argumento['adaptación'] or
argumento['adaptador']},
{'Ilustrador' , Ilustrador},
{'Artista de la cubierta', Artista},
{'Publicado en' , Publicacion
, estilodatos='font-style:italic'},
{'Tipo de publicación' , argumento['tipo de publicación'] or
argumento['tipo']},
{'Editorial', Editorial, clase='plainlist'},
{'Ciudad' , LugarPublicacion},
{'País' , Pais},
{'Fecha de publicación', Fecha},
{'Formato' , Formato},
{'Páginas' , Paginas},
--{'Tamaño y peso', argumento['tamano_peso']}, -- Usar los parámetros para el formato
{'Premios' , Premios, clase='plainlist'},
{'Texto en español' , Wikisource}
},
{tipo='sección',
titulo = 'Contenido',
{'', Contenido, clase='plainlist'}
}
}
-- Series de libros
if Entidad and Entidad.claims and Entidad.claims.P179 and Entidad.claims.P179[1] then
declaracionSerie1 = Entidad.claims.P179[1]
tituloSerie = "''" .. formatoIdEntidad('Q' .. declaracionSerie1.mainsnak.datavalue.value['numeric-id'],
{['enlace'] = 'sí'}) .. "''"
if declaracionSerie1.qualifiers and declaracionSerie1.qualifiers.P155 and declaracionSerie1.qualifiers.P155[1] and declaracionSerie1.qualifiers.P155[1].datavalue then
precedidaPor = formatoIdEntidad('Q' .. declaracionSerie1.qualifiers.P155[1].datavalue.value['numeric-id'],
{['enlace'] = 'sí'})
end
if declaracionSerie1.qualifiers and declaracionSerie1.qualifiers.P156 and declaracionSerie1.qualifiers.P156[1] and declaracionSerie1.qualifiers.P156[1].snaktype == 'value' then
sucedidaPor = formatoIdEntidad('Q' .. declaracionSerie1.qualifiers.P156[1].datavalue.value['numeric-id'],
{['enlace'] = 'sí'})
end
if precedidaPor or sucedidaPor then
serieConCualificador = true
table.insert(FichaLibro,
{tipo = 'sección',
titulo = tituloSerie,
{tipo = 'sucesión',
anterior = precedidaPor,
siguiente = sucedidaPor,
color = ColorFondoSubtitulo,
['estilo fuente'] = 'italic'
}
}
)
end
end
if not serieConCualificador then
table.insert(FichaLibro,
{tipo='sección',
titulo = argumento['serie'] or
argumento['Serie de libros'] or
propiedad('P179',{['formatoTexto'] = 'cursivas',['enlace']='sí'}) or
'Serie',
{tipo = 'sucesión',
anterior = argumento['precedido_por'] or -- FALTA ver El Mago de la Serpiente
argumento['anterior'] or
argumento['Libro que le precede'] or
argumento['Libro que le precede en la serie'] or
propiedad('P155',enlazar)
,
siguiente = argumento['seguido_por'] or
argumento['posterior'] or
argumento['siguiente'] or
argumento['Libro que le sigue'] or
argumento['Libro que le sigue en la serie'] or
propiedad('P156',enlazar)
,
color = ColorFondoSubtitulo,
['estilo fuente'] = 'italic'
}
}
)
end
table.insert(FichaLibro,
{tipo='sección',
titulo = argumento['Serie de libros 2'] or
'Serie',
{tipo = 'sucesión',
anterior = argumento['Libro que le precede 2'] or
argumento['Libro que le precede en la serie 2'],
siguiente = argumento['Libro que le sigue 2'] or
argumento['Libro que le sigue en la serie 2'],
color = ColorFondoSubtitulo,
['estilo fuente'] = 'italic'
}
}
)
table.insert(FichaLibro,
{tipo='sección',
titulo = argumento['Autor'] and 'Cronología de ' .. argumento['Autor'],
{tipo = 'sucesión',
anterior = argumento['Libro anterior'] or
argumento['Libro que le precede en la cronología'],
siguiente = argumento['Libro posterior'] or
argumento['Libro que le sigue en la cronología'],
['año anterior'] = argumento['Año anterior'] or argumento['Año del libro que le precede en la cronología'],
['año'] = AnyoOriginal,
['año siguiente'] = argumento['Año posterior'] or argumento['Año del libro que le sigue en la cronología'],
color = ColorFondoSubtitulo,
['estilo fuente'] = 'italic'
}
}
)
-- Añadir categorías si es posible
if not ModuloPaginas.sePuedeCategorizar() then
return ModuloFicha.infobox(FichaLibro)
end
local categorias = ''
-- Errores
if etiquetaWikidata and etiquetaWikidata:match('%(') then
categorias=categorias .. '[[Categoría:Wikipedia:Páginas con etiquetas de Wikidata con paréntesis]]'
end
-- Géneros
local categoriasGeneros = {}
if Entidad and Entidad.claims then
if generoWikidata then
if generoWikidata:find('[Cc]uento') or esUnLibroDeCuentos then
if esUnLibro then
esUnLibroDeCuentos = true
end
-- Cuentos del autor
if esUnLibroDeCuentos then
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Libros de cuentos de $1'},Entidad.claims['P50']))
else
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Cuentos de $1'},Entidad.claims['P50']))
end
-- Cuentos de un año
if esUnLibroDeCuentos then
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Libros de cuentos de $1', ['formatoFecha']='año'},Entidad.claims['P577']))
else
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Cuentos de $1', ['formatoFecha']='año'},Entidad.claims['P577']))
end
-- Cuentos de un país
if esUnLibroDeCuentos then
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Libros de cuentos de $1'},Entidad.claims['P495']))
else
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Cuentos de $1'},Entidad.claims['P495']))
end
-- Cuentos de un idioma
if esUnLibroDeCuentos then
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Libros de cuentos en $1'}, Entidad.claims['P407'] or Entidad.claims['P364']))
else
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Cuentos en $1'}, Entidad.claims['P407'] or Entidad.claims['P364']))
end
if subgeneroWikidata then
if subgeneroWikidata:find('[Cc]iencia ficción') then
if esUnLibroDeCuentos then
table.insert(categoriasGeneros, '[[Categoría:Libros de cuentos de ciencia ficción]]')
else
table.insert(categoriasGeneros, '[[Categoría:Cuentos de ciencia ficción]]')
end
end
if subgeneroWikidata:find('[Ff]antástica') or subgeneroWikidata:find('[Ff]antasía') then
if esUnLibroDeCuentos then
table.insert(categoriasGeneros, '[[Categoría:Libros de cuentos de fantasía]]')
else
table.insert(categoriasGeneros, '[[Categoría:Cuentos fantásticos]]')
end
end
if subgeneroWikidata:find('[Hh]orror') or subgeneroWikidata:find('[Tt]error') then
if esUnLibroDeCuentos then
table.insert(categoriasGeneros, '[[Categoría:Libros de cuentos de terror]]')
else
table.insert(categoriasGeneros, '[[Categoría:Cuentos de terror]]')
end
end
end
end
if generoWikidata:find('[Tt]eatro') then
-- Obras de teatro por autor
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Obras de teatro de $1'},Entidad.claims['P50']))
-- Obras de teatro de un año
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Obras de teatro de $1', ['formatoFecha']='año'},Entidad.claims['P577']))
-- Obras de teatro de un país
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Obras de teatro de $1'
},Entidad.claims['P495']))
-- Obras de teatro de un idioma
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Obras de teatro en $1',
},Entidad.claims['P407'] or Entidad.claims['P364']))
end
if generoWikidata:find('[Nn]ovela') then
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = categoriasGenerosNovelas},Entidad.claims['P136']))
-- Novelas por tema
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = categoriasTemasNovelas},Entidad.claims['P921']))
-- Novelas del autor
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Novelas de $1'},Entidad.claims['P50']))
-- Novelas de un año
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Novelas de $1', ['formatoFecha']='año'},Entidad.claims['P577']))
-- Novelas ambientadas en una ubicación
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Novelas ambientadas en $1'},Entidad.claims['P840']))
-- Novelas de un país
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Novelas de $1'
},Entidad.claims['P495']))
-- Novelas de un idioma
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Novelas en $1',
}, Entidad.claims['P407'] or Entidad.claims['P364']))
end
if generoWikidata:find('[Pp]oesía') then
-- Poemas del autor
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Poemas de $1'},Entidad.claims['P50']))
-- Poemas de un año
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Poemas de $1', ['formatoFecha']='año'},Entidad.claims['P577']))
-- Poemas de un país
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Poemas de $1'
},Entidad.claims['P495']))
-- Pendiente si categorizar por el idioma.
-- Poemas de un idioma
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Poemas en $1',
}, Entidad.claims['P407'] or Entidad.claims['P364']))
end
if generoWikidata:find('[Nn]o ficción') then
-- Obras literarias de no ficción por autor
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Obras literarias de no ficción de $1'},Entidad.claims['P50']))
-- Obras literarias de no ficción de un año
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Obras literarias de no ficción de $1', ['formatoFecha']='año'},Entidad.claims['P577']))
-- Obras literarias de no ficción de un país
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Obras literarias de no ficción de $1'
},Entidad.claims['P495']))
-- Obras literarias de no ficción de un idioma
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Obras literarias de no ficción en $1',
},Entidad.claims['P407'] or Entidad.claims['P364']))
end
end
if not categoriasGeneros[1] then
-- Libros de un año
table.insert(categoriasGeneros, categorizarWikidata({['categoría'] = 'Libros de $1', ['formatoFecha']='año'},Entidad.claims['P577']))
-- Libros de un país
table.insert(categoriasGeneros, categorizarWikidata(
{['categoría'] = 'Libros de $1'}
,Entidad.claims['P495']))
end
if categoriasGeneros[1] then
categorias = categorias .. table.concat(categoriasGeneros)
end
-- Obras infantiles, fábulas, etc.
categorias=categorias .. categorizarWikidata({['categoría'] = categoriasGeneros2},Entidad.claims['P136'])
-- Premios
categorias = categorias .. categorizarWikidata({['categoría'] = 'Obras ganadoras del $1'}, Entidad.claims['P166'])
-- Publicaciones de una editorial
categorias = categorias .. categorizarWikidata({['categoría'] = 'Libros publicados por $1'}, Entidad.claims['P123'])
end
return ModuloFicha.infobox(FichaLibro) .. categorias
end
function enlazarIdioma(idioma, mayuscula)
if not idioma then
return idioma
else
inicio, medio, fin=idioma:match('(%[[^|%]]*|)(.)(.*)')
if inicio and medio and fin then
if mayuscula == 'sí' then
return inicio .. medio:upper() .. fin
else
return inicio .. medio:lower() .. fin
end
end
if idioma:find('%[') then
return idioma
end
idioma= idioma:lower()
if mayuscula == 'sí' then
return '[[idioma ' .. idioma .. '|' .. idioma:gsub("%a", string.upper,1) .. ']]'
else
return '[[idioma ' .. idioma .. '|' .. idioma .. ']]'
end
end
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 = normal
end
opciones.entityId = Entidad.id
opciones.propiedad = idPropiedad
valorPropiedad = getPropiedadWikidata(opciones,Entidad.claims[idPropiedad])
return valorPropiedad
end
end
-- Función que devuelve el género y el subgénero de Wikidata.
-- La novela, novela corta o cuento, se devolverán siempre en el género.
-- El resto de géneros se devolverán como subgénero o como género dependiendo de
-- si en Wikidata se utiliaz uno de los géneros anteriores.
-- Por ejemplo:
-- - En Wikidata Novela + ciencia ficción --> género = Novela, subgénero = Ciencia ficción
-- - En Wikidata ciencia ficción --> género = Ciencia ficción
function obtenerGeneroWikidata()
if not Entidad or not Entidad.claims then
return
end
-- Subgéneros de novelas sin un artículo en la Wikipedia y que se reemplazan por el subgénero que existe
local subgenerosNovelas = {
['Q3056541' ] = 'Q4184' , -- novela autobiográfica / autobiografía
['Q26228228'] = 'Q1077883', -- novela biopunk / biopunk
['Q26228231'] = 'Q174526' , -- novela ciberpunk / ciberpunk
['Q12132683'] = 'Q24925' , -- novela de ciencia ficción /
['Q10992055'] = 'Q1057172', -- novela fantástica / literatura fantástica
['Q11825892'] = 'Q1233720', -- novela juvenil / literatura juvenil
['Q26906554'] = 'Q197949' , -- novela posapocalíptica / ficción posapocalíptica
['Q27022710'] = 'Q1341831', -- novela postciberpunk / postciberpunk
['Q27020789'] = 'Q223685' , -- novela steampunk / steampunk
['Q3440959' ] = 'Q182015' , -- novela de suspense / suspense
['Q26225470'] = 'Q224989' , -- novela ucrónica / ucronía
['Q21616374'] = 'Q1425557', -- novela de vampiros / literatura de vampiros
['Q21615367'] = 'Q131539' , -- novela infantil / literatura infantil
}
local subgenerosCuentos = {
['Q21905924'] = 'Q24925' , -- cuento de ciencia ficción / ciencia ficción
}
local subgenerosGeneros = {
['Q132311' ] = 'Q1057172', -- Género fantástico / Literatura fantástica
['Q16681629'] = 'Q224989' , -- literatura ucrónica / Ucronía
['Q516626' ] = 'Q193606' , -- Terror (sentimiento de miedo o fobia en su escala máxima) / Terror (género literario)
}
local temasGeneros = {
['Q1481165' ] = 'Q2763' , -- literatura del Holocausto / Holocausto
['Q182154' ] = 'Q253732' , -- viaje a través del tiempo / viaje en el tiempo en la ficción
['Q253732' ] = 'Q253732' , -- viaje en el tiempo en la ficción / viaje en el tiempo en la ficción
}
local declaracionesGeneros = Entidad.claims['P136']
local declaracionesInstancias = Entidad.claims['P31']
local declaracionesFormas = Entidad.claims['P7937']
local declaracionesTemas = Entidad.claims['P921']
local identificadorGenero, identificadorTema
local generos = {}
local subgeneros = {}
local temas = {}
if declaracionesTemas then
for k,v in pairs(declaracionesTemas) do
identificadorTema = 'Q' .. v.mainsnak.datavalue.value['numeric-id']
if identificadorTema == 'Q182154' then -- viaje a través del tiempo
insertarEn(temas, 'Q253732') -- viaje en el tiempo en la ficción
else
insertarEn(temas, identificadorTema)
end
end
end
if declaracionesInstancias then
for k,v in pairs(declaracionesInstancias) do
identificadorGenero = 'Q' .. v.mainsnak.datavalue.value['numeric-id']
if insertarEn(subgeneros, subgenerosNovelas[identificadorGenero]) or
identificadorGenero == 'Q8261' or -- novela
identificadorGenero == 'Q149537' then -- novela corta
insertarEn(generos, 'Q8261') -- novela
elseif insertarEn(subgeneros, subgenerosCuentos[identificadorGenero]) or
identificadorGenero == 'Q49084' or -- cuento
identificadorGenero == 'Q1279564' or -- libro de cuentos
identificadorGenero == 'Q27560760' or -- libro de cuentos de hadas
identificadorGenero == 'Q7679101' or -- conte
identificadorGenero == 'Q17991521' or -- tale
identificadorGenero == 'Q5457615' or -- microrelato
identificadorGenero == 'Q472808' then -- cuento largo
insertarEn(generos, 'Q49084') -- cuento
elseif identificadorGenero == 'Q5185279' or -- poema
identificadorGenero == 'Q482' or -- poesia
identificadorGenero == 'Q12106333' then -- poemario
insertarEn(generos, 'Q482') -- poesia
elseif identificadorGenero == 'Q25379' then -- obra teatral
insertarEn(generos, 'Q11635') -- teatro
end
end
end
if declaracionesFormas then
for k,v in pairs(declaracionesFormas) do
identificadorGenero = 'Q' .. v.mainsnak.datavalue.value['numeric-id']
if insertarEn(subgeneros, subgenerosNovelas[identificadorGenero]) or
identificadorGenero == 'Q8261' or -- novela
identificadorGenero == 'Q149537' then -- novela corta
insertarEn(generos, 'Q8261') -- novela
elseif insertarEn(subgeneros, subgenerosCuentos[identificadorGenero]) or
identificadorGenero == 'Q49084' or -- cuento
identificadorGenero == 'Q1279564' or -- libro de cuentos
identificadorGenero == 'Q27560760' or -- libro de cuentos de hadas
identificadorGenero == 'Q7679101' or -- conte
identificadorGenero == 'Q17991521' or -- tale
identificadorGenero == 'Q5457615' or -- microrelato
identificadorGenero == 'Q472808' then -- cuento largo
insertarEn(generos, 'Q49084') -- cuento
elseif identificadorGenero == 'Q5185279' or -- poema
identificadorGenero == 'Q482' or -- poesia
identificadorGenero == 'Q12106333' then -- poemario
insertarEn(generos, 'Q482') -- poesia
elseif identificadorGenero == 'Q25379' then -- obra teatral
insertarEn(generos, 'Q11635') -- teatro
end
end
end
if declaracionesGeneros then
for k,v in pairs(declaracionesGeneros) do
identificadorGenero = 'Q' .. v.mainsnak.datavalue.value['numeric-id']
if insertarEn(subgeneros, subgenerosNovelas[identificadorGenero]) then
insertarEn(generos, 'Q8261') -- novela
elseif insertarEn(subgeneros, subgenerosGeneros[identificadorGenero]) or
insertarEn(temas, temasGeneros[identificadorGenero])then
elseif identificadorGenero == 'Q3547700' then -- ucronía de fantasía
insertarEn(subgeneros, 'Q224989') -- Ucronía
insertarEn(subgeneros, 'Q1057172') -- Literatura fantástica
elseif insertarEn(subgeneros, subgenerosCuentos[identificadorGenero]) or
identificadorGenero == 'Q5457615' or -- microrelato
identificadorGenero == 'Q472808' then -- cuento largo
insertarEn(generos, 'Q49084') -- cuento
elseif identificadorGenero == 'Q149537' then -- novela corta
insertarEn(generos, 'Q8261') -- novela
elseif identificadorGenero == 'Q3326349' then -- lirica
insertarEn(generos, 'Q482') -- poesia
elseif identificadorGenero == 'Q5185279' then -- poema
insertarEn(generos, 'Q482') -- poesia
elseif identificadorGenero == 'Q25379' then -- Obra teatral
insertarEn(generos, 'Q11635') -- Teatro
elseif identificadorGenero == 'Q27801' then -- Literatura de no ficción
insertarEn(generos, 'Q213051') -- No ficción
elseif identificadorGenero == 'Q1347298' then -- novela por entregas
-- No es un género en sí. No mostrarlo.
elseif identificadorGenero == 'Q10453828' then -- novela de viajes en el tiempo
insertarEn(generos, 'Q8261') -- novela
insertarEn(temas, 'Q253732') -- viaje en el tiempo en la ficción
elseif identificadorGenero == 'Q26928598' or -- novela distópica
identificadorGenero == 'Q20443047' then -- Literatura distópica
insertarEn(generos, 'Q8261') -- novela
insertarEn(temas, 'Q180774') -- Distopía
elseif identificadorGenero == 'Q3238422' then -- literatura de ciencia ficción
insertarEn(subgeneros, 'Q24925') -- ciencia ficción
elseif ModuloTablas.en(tablaGeneros, identificadorGenero) then
insertarEn(generos, identificadorGenero)
else
insertarEn(subgeneros, identificadorGenero)
end
end
end
for k,v in pairs(subgeneros) do
if enTabla(generos, 'Q8261') then -- novela
if v == 'Q193606' then -- literatura de terror
subgeneros[k] = 'Q20667180' -- novela de terror
elseif v == 'Q5937792' then -- género políciaco
subgeneros[k] = 'Q208505' -- novela políciaca
end
end
end
-- Eliminar subgeneros duplicados
for k,v in pairs(subgeneros) do
if enTabla(subgeneros, v) < k then
subgeneros[k] = nil
end
end
local subgenerosConFormato = formatear(subgeneros)
-- Reemplazar en los géneros "novela de ciencia ficción" por "ciencia ficción" y similares
if subgenerosConFormato then
subgenerosConFormato = subgenerosConFormato:gsub('|novela de ', '|')
subgenerosConFormato = subgenerosConFormato:gsub('|Novela de ciencia ficción', '|Ciencia ficción')
subgenerosConFormato = subgenerosConFormato:gsub('%[%[Novela de terror%]%]', '[[Novela de terror|Terror]]')
subgenerosConFormato = subgenerosConFormato:gsub('|Novela de terror', '|Terror')
subgenerosConFormato = subgenerosConFormato:gsub('%[%[Literatura de ficción%]%]', '[[Literatura de ficción|Ficción]]')
subgenerosConFormato = subgenerosConFormato:gsub('%[%[literatura de ficción%]%]', '[[Literatura de ficción|ficción]]')
end
if generos[1] then
return addLinkbackWikidata(formatear(generos), Entidad.id, 'P136')
, addLinkbackWikidata(subgenerosConFormato, Entidad.id, 'P136')
, addLinkbackWikidata(formatear(temas), Entidad.id, 'P921')
else
return addLinkbackWikidata(subgenerosConFormato, Entidad.id, 'P136')
, nil
, addLinkbackWikidata(formatear(temas), Entidad.id, 'P921')
end
end
-- Formatear una tabla de identificadores de entidades de Wikidata
function formatear(identificadores)
local identificadoresFormateados = {}
local primero = true
for k,v in pairs(identificadores) do
if primero then
table.insert(identificadoresFormateados, formatoIdEntidad(v,{['mayúscula'] = 'sí', ['enlace'] = 'sí'}))
primero = false
else
table.insert(identificadoresFormateados, formatoIdEntidad(v, {['mayúscula'] = 'no', ['enlace'] = 'sí'}))
end
end
-- No devolver nada si la lista no tiene elementos
if not primero then
return mw.text.listToText(identificadoresFormateados)
end
end
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
end
end
function obtenerWikisource(idioma)
if not idioma or not Entidad or not Entidad.sitelinks then
return
end
if idioma:find('[Ee]spañol') then
if not Entidad.sitelinks.eswikisource or not Entidad.sitelinks.eswikisource.title then
return
end
tituloWikiSource = Entidad.sitelinks.eswikisource.title
--[[Archivo:Wikisource-logo.svg|15px| ]]
return "''[[s:" .. tituloWikiSource .. "|" .. tituloWikiSource .. "]]'' en [[Wikisource]]"
elseif idioma:find('[Ii]nglés') then
if not Entidad.sitelinks.enwikisource or not Entidad.sitelinks.enwikisource.title then
return
end
tituloWikiSource = Entidad.sitelinks.enwikisource.title
return "''[[:en:s:" .. tituloWikiSource .. "|" .. tituloWikiSource .. "]]'' en [[Wikisource]]"
elseif idioma:find('[Ff]rancés') then
if not Entidad.sitelinks.frwikisource or not Entidad.sitelinks.frwikisource.title then
return
end
tituloWikiSource = Entidad.sitelinks.frwikisource.title
return "''[[:fr:s:" .. tituloWikiSource .. "|" .. tituloWikiSource .. "]]'' en [[Wikisource]]"
end
end
function corregirIdiomaWikidata(entidad, idPropiedad)
if not entidad or not idPropiedad then
return
end
local declaracion= elementoTabla(entidad, 'claims', idPropiedad)
local idIdioma
if not declaracion then
return
end
for k,v in pairs(declaracion) do
idIdioma=elementoTabla(v,'mainsnak','datavalue','value','id')
if idIdioma == 'Q7979' or -- inglés británico
idIdioma == 'Q44676' or -- inglés canadiense
idIdioma == 'Q7976' or -- inglés estadounidense
idIdioma == 'Q665624' then -- inglés en Irlanda
v.mainsnak.datavalue.value.id='Q1860'
v.mainsnak.datavalue.value['numeric-id']=1860
end
end
end
function obtenerTitulo()
--De momento solo obtener el título de Wikidata si solo hay definido uno.
--if true then return ModuloTablas.tostring(Entidad) end
if not elementoTabla(Entidad, 'claims', 'P1476', 2) then
return propiedad('P1476')
end
end
return z