Módulo:Zona de pruebas/Agabi10/Ficha de anime y manga
Este módulo no tiene página de documentación[crear]
local z = {}
local argumentos
local argumento = {}
local Entidad
local algumaPropiedadEnlazaWikidata = false
-- Módulos utilizados
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')
local ModuloFormatoTexto = require('Módulo:Formato texto')
local ModuloIdentificadores = require('Módulo:Identificadores')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloTablas = require('Módulo:Tablas')
local ModuloURL = require('Módulo:URL')
-- Constantes
local enMayusculas = {['formatoTexto'] = 'mayúscula'}
local enMayusculasO = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o '}
local listaNoOrdenada = {['lista'] = 'no ordenada'} --, ['debeExistir'] = 'sí'
local lugar = {['conjunción']=' o ', ['valor-función'] = ModuloWikidataFormatos.formatoLugar}
local debeExistir = {['debeExistir'] = 'sí'}
local conPeriodo = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo}
-- Estilos de ficha
local estilotitulo = 'background:#ccccff;font-size:120%;font-weight:bolder;height:45px;line-height:1.2em;vertical-align:middle'
local estiloseccion = 'background:#ccccff;font-weight:bold;vertical-align:middle'
function z.Ficha(frame)
-- Hacer que funcione la función formatBandera y formatoGentilicio
ModuloWikidata:setFrame(frame) -- No funciona si se pone ModuloWikidata.setFrame(marco)
-- Obtener una copia de los argumentos eliminando los argumentos sin valor
local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame)
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
Entidad = mw.wikibase.getEntityObject(argumento['entidad'] or nil) or {}
--if true then
-- return ModuloTablas.tostring(Entidad)
--end
local componentes = obtenerEntidadesEnPropiedad('P527')
local Ficha = {
entidad = argumento['entidad'],
estilotitulo = estilotitulo,
['titulo'] = argumento['título'] or obtenerEtiquetaWikidata() or mw.title.getCurrentTitle().text,
imagen = argumento['imagen'] or argumento['Imagen'] or
argumento['foto'] or
propiedad('P18', {uno='sí'}),
{'', propiedad('P1476'), estilodatos = 'background:#ddddff;font-size:95%'},
{'Género', propiedad('P136', {['formatoTexto'] = 'mayúscula'})},
generarSubfichas(componentes),
{'', propiedad('P856') and '['..propiedad('P856')..' Sitio web oficial]', estilodatos = estiloseccion}
}
local categorias = ''
return ModuloFicha.infobox(Ficha) .. categorias
end
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
end
end
function propiedad(idPropiedad,opciones,entidad)
entidad = entidad or Entidad
if entidad and entidad.claims and entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
opciones['propiedad'] = idPropiedad
valorPropiedad = ModuloWikidata.getPropiedad(opciones,entidad.claims[idPropiedad])
if valorPropiedad and valorPropiedad:match('%[%[:d:') then
algunaPropiedadEnlazaWikidata = true
end
return valorPropiedad
end
end
function generarSubfichas(componentes)
ModuloTablas.tostring(componentes)
local subfichas = { tipo = 'sección' }
for clave,valor in pairs(componentes) do
animeNewsNetworkID = propiedad('P1985', {}, valor)
animeNewsNetwork = animeNewsNetworkID and '\'\'<span class="plainlinks">[http://www.animenewsnetwork.com/encyclopedia/anime.php?id=' ..
animeNewsNetworkID .. ' Ficha]</span> en [[Anime News Network]]\'\''
if valor then
--return { tipo = 'sección', {'', require("Módulo:Tablas").tostring(valor)}}
end
table.insert(subfichas, { tipo = 'sección',
['titulo'] = propiedad('P31', {['formatoTexto'] = 'mayúscula'}, valor) ..
'<span style="float:right;font-weight:normal"><span>[</span>[[:d:' .. valor['id'] .. '|Editar]]<span>]</span></span>',
estilotitulo = estiloseccion,
{'Director', propiedad('P57', {}, valor)},
{'Cadena televisiva', propiedad('P449', {}, valor)},
{'Primera emisión', propiedad('P580', {}, valor)},
{'Última emisión', propiedad('P582', {}, valor)},
{'Episodios', propiedad('P1113', {}, valor)},
{'', animeNewsNetwork}
})
end
return subfichas
end
function obtenerEntidadesEnPropiedad(idPropiedad)
local entidades = {}
local componentes = Entidad and Entidad.claims and Entidad.claims[idPropiedad]
if componentes then
for k,v in pairs(componentes) do
local value = v and v.mainsnak and v.mainsnak.datavalue and v.mainsnak.datavalue.value or {}
if value and value['numeric-id'] then
entidades[k] = mw.wikibase.getEntityObject('Q' .. value['numeric-id'])
end
end
end
return entidades
end
return z