Módulo:Ficha animanga/Ficha
Este módulo implementa las fichas que pretende reemplazar a la actual implementación de
{{Infobox animanga encabezado}}
{{Infobox animanga principal}}
{{Infobox animanga personaje habilidades}}
{{Infobox animanga personaje serie}}
{{Infobox animanga cierre}}
el cual a su vez es implementado por Módulo:Ficha animanga.
-- Este módulo auxiliar contiene fichas que usan junto con 'Módulo:Ficha animanga'
local p = {}
local ModuloFicha = require('Módulo:Ficha animanga')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloFormatos = require('Módulo:Wikidata/Formatos')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloArgs = require('Módulo:Argumentos')
local elementoTabla = require('Módulo:Tablas').elemento
local formatoNumero = ModuloFormatos.formatoNumero2
local numeroUnidad = ModuloFormatos.formatoUnidad2
local lang = mw.language.new('es')
local obtenerEtiquetaWikidata = ModuloWikidata.obtenerEtiquetaWikidata
local obtenerImagenWikidata = ModuloWikidata.obtenerImagenWikidata
local argumentos = ModuloArgs.obtenerValorDeArgumentos
local ficha = ModuloFicha.infobox
-- :: Tablas de datos
local Datos = mw.loadData('Módulo:Ficha_animanga/datos')
local ColoresCabello = mw.loadData('Módulo:Ficha de personaje/Colores')
-- Variables globales
local Entidad, InstanciaDeID, Integrada, Titulo, Subtitulo, TamanoImagen, Pie, PieTabla, ClaseTitulo, EstiloTitulo, EstiloSubtitulo, EstiloEtiqueta, anchoImagen, ColorTituloFondo, ColorTituloTexto, ColorEtiqueta
-- Esta función establece los vaores iniciales de cada ficha
local function _init(frame)
ModuloWikidata:setFrame(frame)
ModuloArgs.obtenerTablaDeArgumentos(frame)
argumentos(frame)
Entidad = mw.wikibase.getEntityObject(argumentos{'entidad', 'id'}) or {}
InstanciaDeID = propiedad('P31', {['formato'] = 'entidadID'})
-- :: Estilos globales
ClaseTitulo = 'animanga'
EstiloTitulo = 'font-weight:bold;'
EstiloSubtitulo = 'font-style:italic;font-size:120%'
EstiloEtiqueta = 'width:30%;font-weight:bold;'
EstiloDatos = 'width:70%;'
anchoImagen = '245px'
ColorTituloFondo= '#ccccff'
ColorTituloTexto= '#000000'
ColorEtiqueta = '#eeeeff'
Integrada = argumentos{'uni', 'child', 'integrada', 'animanga'} or 'sí'
Titulo = argumentos{'titulo', 'título', {obtenerEtiquetaWikidata, Entidad}, {ModuloPaginas.nombrePagina, {desambiguar='sí'}}}
Subtitulo = argumentos{'eslogan', 'slogan', 'subtítulo', {propiedad, 'P6291'}} or ''
-- :: Imagen del encabezado
Imagen = argumentos{'imagen', 'image', 'logo', 'Imagen'}
TamanoImagen = argumentos{'tamaño de imagen', 'image_width', 'tamaño imagen', 'tamaño_imagen'} or '250px'
if Imagen then
Pie = argumentos{'pie', 'image_caption'}
else
Imagen, Pie = aaa --obtenerImagenWikidata('P18') or obtenerImagenWikidata('P154')
end
-- :: Pie de tabla
local PieTabla = argumentos{'1'}-- or 'logo'
local PieDatos = {
['logo'] = {
"vertical-align:middle;text-align:left;float-left;background:#ccccff",
"[[Archivo:Wikipe-tan face.jpg|50px]]'''[[Portal:Anime y Manga|<span style=\"color:black;margin-left:6px\">Portal Anime y Manga</span>]]'''",
},
['normal'] = {
'background:#ccccff',
"'''[[Portal:Anime y Manga|<span style=\"color:black\">Portal Anime y Manga</span>]]'''",
},
}
if PieDatos[Pie] then
EstiloPie = PieDatos[Pie][1]
PieTabla = PieDatos[Pie][2]
end
end
function p.fichaEncabezado(frame)
-- :: Inicializador
_init(frame)
-- Colores de la ficha en base al color de cabello del personaje
local ColorAuto = argumentos{'color auto', 'color_auto'} or 'sí'
local ColorCabello = propiedad('P1884', {['formato'] = 'entidadID'})
if ColoresCabello[ColorCabello] and ColorAuto then
ColorTituloFondo= ColoresCabello[ColorCabello][1]
ColorTituloTexto= ColoresCabello[ColorCabello][3]
ColorEtiqueta = ColoresCabello[ColorCabello][2]
end
-- :: General
local NombreOrig = argumentos{'nombre_original', 'nombre original', 'real', 'nombrejapon', 'japanname', 'namejapon', 'nombre_ja', 'ja_kanji', {propiedad, 'P1476', {['idioma'] = 'ja'}}}
--if NombreOrig then Titulo = Titulo .. '<br><small>' .. NombreOrig .. '</small>' end
local Autor = argumentos{'creador', 'autor', {propiedad, 'P50'}}
local Genero = argumentos{'género', 'genero', 'genre', {propiedad, 'P136', {['lista'] = 'nobullet'}}}
-- :: Estilos
ColorTituloFondo = argumentos{'piel', 'colorfondo'} or ColorTituloFondo
ColorTituloTexto = argumentos{'colortexto'} or ColorTituloTexto
EstiloTitulo = EstiloTitulo .. 'font-style:italic;background-color:' .. ColorTituloFondo .. ';color:' .. ColorTituloTexto
EstiloEtiqueta = argumentos{'estiloetiqueta'} or EstiloEtiqueta .. ';background-color:' .. ColorEtiqueta
local TablaFicha = {
tipo = 'cabecera',
uni = Integrada,
titulo = Titulo,
clasetitulo = ClaseTitulo,
estilotitulo = EstiloTitulo,
estilosubtitulo = EstiloTitulo,
estiloetiqueta = EstiloEtiqueta,
estilodatos = EstiloDatos,
imagen = Imagen,
["tamañoimagen"] = TamanoImagen,
pie = Pie,
estilopie = "font-size:88%",
{tipo="sección",
estilodatos = EstiloDatos,
{'Autor', Autor},
{'Género', Genero},
}
}
return ficha(TablaFicha)
end
function p.fichaPrincipal(frame)
-- :: Inicializador
_init(frame)
-- :: General
local NombreOrig = argumentos{'nombre_original', 'nombre original', 'real', 'nombrejapon', 'japanname', 'namejapon', 'nombre_ja', 'ja_kanji', {propiedad, 'P1476', {['idioma'] = 'ja', ['calificativo'] = 'P2440'}}, {propiedad, 'P1559', {['idioma'] = 'ja', ['calificativo'] = 'P2440'}}, {propiedad, 'P1705', {['idioma'] = 'ja', ['calificativo'] = 'P2440'}}} or ''
local OtrosNombres = argumentos{'título_otros', 'titulo_otros', {propiedad, 'P4970', {['lista'] = 'nobullet'}}}
local Autor = argumentos{'autor', 'author', 'creador', 'mangaka', {propiedad, 'P50', {['lista'] = 'nobullet'}}}
local Director = argumentos{'director', {propiedad, 'P57', {['lista'] = 'nobullet'}}}
local Ilustrador = argumentos{'ilustrador', 'illustrator', {propiedad, 'P110', {['lista'] = 'nobullet'}}}
local Disenador = argumentos{'diseñador', 'designer', {propiedad, 'P287', {['lista'] = 'nobullet'}}}
local Productor = argumentos{'productor', 'producción', 'producer', {propiedad, 'P162'}}
local Escritor = argumentos{'escritor', 'writer', {propiedad, 'P98', {['lista'] = 'nobullet'}}}
local Guion = argumentos{'guión', 'guion', 'script', {propiedad, 'P58', {['lista'] = 'nobullet'}}}
local Estudio = argumentos{'estudio', 'studio', {propiedad, 'P272', {['lista'] = 'nobullet'}}}
local Imprenta = argumentos{'imprenta', 'imprint', {propiedad, 'P872', {['lista'] = 'nobullet'}}}
local Cadena = argumentos{'cadena', 'emisora', 'station', {propiedad, 'P449', {['lista'] = 'nobullet'}}}
local OtrasCadenas = argumentos{'cadena_otros', 'cadena otros', {propiedad, 'P750', {['lista'] = 'nobullet'}}}
if OtrasCadenas then OtrasCadenas = seccionDesplegable(frame, 'Otras cadenas', OtrasCadenas, ColorEtiqueta) end
local Editorial = argumentos{'editorial', {propiedad, 'P123', {['lista'] = 'nobullet'}}}
local OtrasEdit = argumentos{'editorial_otros', 'editorial_otros'}
if OtrasEdit then OtrasEdit = seccionDesplegable(frame, 'Otras editoriales', OtrasEdit, ColorEtiqueta) end
local Revista = argumentos{'revista', 'magazine', 'publicado en', {propiedad, 'P1433', {['lista'] = 'nobullet'}}}
local Compositor = argumentos{'música', 'musica', 'compositor', 'composer', {propiedad, 'P86', {['lista'] = 'nobullet'}}}
local Reparto = argumentos{'reparto', 'cast', {propiedad, 'P161', {['lista'] = 'nobullet'}}}
local Licenciador = argumentos{'licencia', 'licensee', 'licensor', {propiedad, 'P275', {['lista'] = 'nobullet'}}}
local Desarrollador = argumentos{'desarrollador', 'developer', {propiedad, 'P178', {['lista'] = 'nobullet'}}}
local Distribuidor = argumentos{'distribuidor', 'publisher', {propiedad, 'P750', {['lista'] = 'nobullet'}}}
local Demografia = argumentos{'demografía', 'demografia', 'demographic', {propiedad, 'P2360', {['lista'] = 'nobullet'}}}
local Genero = argumentos{'género', 'genero', {propiedad, 'P136', {['lista'] = 'nobullet'}}}
local Motor = argumentos{'motor', {propiedad, 'P408', {['lista'] = 'nobullet'}}}
local Plataforma = argumentos{'plataforma', 'platform', {propiedad, 'P400', {['lista'] = 'nobullet'}}}
local Clasificacion = argumentos{'clasificación', 'clasificacion'}
local Inicio = argumentos{'fecha_inicio', 'lanzamiento', 'estreno', 'first', {propiedad, 'P577', {['enlace'] = 'no'}},
{propiedad, 'P1191', {['enlace'] = 'no'}}, {propiedad, 'P577', {['enlace'] = 'no'}}, {propiedad, 'P580', {['enlace'] = 'no'}}}
local Fin = argumentos{'fecha_fin', 'último', 'ultimo', 'last', {propiedad, 'P582', {['enlace'] = 'no'}}}
local Duracion = argumentos{'duración', 'duracion', 'runtime', {propiedad, 'P2047'}}
local Episodios = argumentos{'num_episodios', 'episodes', {propiedad, 'P1113'}}
local ListaEpisodios= argumentos{'lista_episodios', 'lista episodios', 'episode_list', {propiedad, 'P1113', {['calificador'] = 'P1811'}}}
local RefEpisodios = argumentos{'ref_episodios', {propiedad, 'P1113', {['calificador'] = 'P854'}}}
local Volumenes = argumentos{'num_volumen', 'volumes', {propiedad, 'P2635'}}
local ListaVolumenes= argumentos{'lista_volumen', 'lista volumen', 'volume_list', {propiedad, 'P2635', {['calificador'] = 'P1811'}}}
local RefVolumenes = argumentos{'ref_volumen', {propiedad, 'P2635', {['calificador'] = 'P854'}}}
local Pais = argumentos{'paíslanzamiento', 'paislanzamiento', {propiedad, 'P495'}}
local Idiomas = argumentos{'idioma', 'idiomas', 'lang', {propiedad, 'P407', {['lista'] = 'nobullet'}}}
local ISBN10 = argumentos{'isbn10', 'isbn-10', {propiedad, 'P957'}}
local ISBN13 = argumentos{'isbn', 'isbn13', 'isbn-13', {propiedad, 'P212'}}
local ISBN = ISBN13 or ISBN10 or ''
local Contenido = argumentos{'contenido'}
local NoCategorizar = argumentos{'nocat', 'no_cat'}
local Categoria = {}
local Anio = argumentos{'año'}
--if pcall(lang:formatDate('Y', Inicio)) then Anio = Anio or lang:formatDate('Y', Inicio) end
local TipoObra = string.lower(argumentos{'tipo', 'type'} or InstanciaDeID or 'otro')
local TipoObraSubtitulo
local TipoObraInicio='Fecha de inicio'
local TipoObraFin ='Fecha de fin'
local TipoObraEstudioEditorial = 'Estudio'
local TipoObraCategoria
local EstudioCategoria = argumentos{'estudio', 'studio', {propiedad, 'P272', {['formato'] = 'entidadID'}}}
if Datos['estudios'][EstudioCategoria] then table.insert(Categoria,'[[Categoría:' .. Datos['estudios'][EstudioCategoria] .. ']]') end
if Datos['tipo_obra'][TipoObra] then
TipoObraSubtitulo = Datos['tipo_obra'][TipoObra][1]
TipoObraInicio = Datos['tipo_obra'][TipoObra][2]
TipoObraFin = Datos['tipo_obra'][TipoObra][3]
TipoObraEstudioEditorial= Datos['tipo_obra'][TipoObra][4]
TipoObraCategoria = (function()
local Pais = argumentos{'paíslanzamiento', 'paislanzamiento', {propiedad, 'P495', {['enlace'] = 'no'}}}
if Datos['tipo_obra'][TipoObra][6] and Pais and Pais ~= 'Japón' then
return Datos['tipo_obra'][TipoObra][6] .. ' de ' .. Pais
end
return Datos['tipo_obra'][TipoObra][5]
end)()
end
if TipoObraCategoria and not NoCategorizar then
if Anio then
table.insert(Categoria,'[[Categoría:' .. TipoObraCategoria .. 'de ' .. Anio .. ']]')
else
table.insert(Categoria,'[[Categoría:' .. TipoObraCategoria .. ']]')
end
end
if Entidad then table.insert(Categoria, '[[Categoría:Animanga con datos en Wikidata]]') end
Categoria = table.concat(Categoria,'')
-- :: Datos externos
local identificadoresExternos = {}
local imdbId = argumentos{'imdbid', 'imdbId', {propiedad, 'P345', {['uno'] = 'sí'}}}
local ANNaop = argumentos{'ann_aop', {propiedad, 'P1985', {['uno'] = 'sí'}}}
local ANNm = argumentos{'ann_m', {propiedad, 'P1984', {['uno'] = 'sí'}}}
local VNDB = argumentos{'vndb', {propiedad, 'P3180', {['uno'] = 'sí'}}}
if imdbId then table.insert(identificadoresExternos, '[https://www.imdb.com/title/'..imdbId..'/ Ficha] en [[Internet Movie Database]]') end
if ANNaop then table.insert(identificadoresExternos, '[https://www.animenewsnetwork.com/encyclopedia/anime.php?id='..ANNaop..'/ Ficha] en [[Anime News Network]]') end
if ANNm then table.insert(identificadoresExternos, '[https://www.animenewsnetwork.com/encyclopedia/manga.php?id='..ANNm..'/ Ficha] en [[Anime News Network]]') end
if VNDB then table.insert(identificadoresExternos, '[https://www.animenewsnetwork.com/encyclopedia/manga.php?id='..VNDB..'/ Ficha] en [[Visual Novel Database]]') end
identificadoresExternos = table.concat(identificadoresExternos, '<br>')
local PieTabla = {}
if Contenido then table.insert(PieTabla, Contenido) end
if identificadoresExternos then table.insert(PieTabla, identificadoresExternos) end
-- if Categoria then table.insert(PieTabla, Categoria) end
PieTabla = table.concat(PieTabla,'\n')
-- :: Estilos
ColorTituloFondo = argumentos{'piel', 'colorfondo'} or ColorTituloFondo
ColorTituloTexto = argumentos{'colortexto'} or ColorTituloTexto
EstiloTitulo = EstiloTitulo .. 'background-color:' .. ColorTituloFondo .. ';color:' .. ColorTituloTexto
EstiloEtiqueta = argumentos{'estiloetiqueta'} or EstiloEtiqueta .. ';background-color:' .. ColorEtiqueta
-- Debug = InstanciaDeID
local TablaFicha = {
uni = Integrada,
subtitulo = TipoObraSubtitulo,
clasetitulo = ClaseTitulo,
estilotitulo = EstiloTitulo,
estilosubtitulo = EstiloTitulo,
estiloetiqueta = EstiloEtiqueta,
estilodatos = EstiloDatos,
{tipo="sección",
estilodatos = EstiloSubtitulo,
{'', Titulo},
},
{tipo="sección",
estiloetiqueta = EstiloEtiqueta,
{'Otros Nombres', OtrosNombres},
{'Demografía', Demografia},
{'Genero', Genero},
{'País de lanzamiento', Pais},
{'Idiomas', Idiomas},
{'Autor', Autor},
{'Director', Director},
{'Ilustrador', Ilustrador},
{'Disenador', Disenador},
{'Productor', Productor},
{'Escritor', Escritor},
{'Guion', Guion},
{'Reparto', Reparto},
{'Compositor', Compositor},
{'Estudio', Estudio},
{'Imprenta', Imprenta},
{'Cadena', Cadena},
{'', OtrasCadenas},
{'Editorial', Editorial},
{'', OtrasEdit},
{'Revista', Revista},
{'Licenciado por', Licenciador},
{'Desarrollador', Desarrollador},
{'Distribuidor', Distribuidor},
{'Plataforma', Plataforma},
{'Motor', Motor},
{'Clasificacion', Clasificacion},
{TipoObraInicio, Inicio},
{TipoObraFin, Fin},
{'Duracion', Duracion},
{'Episodios', Episodios},
{'Volumenes', Volumenes},
{'ISBN', ISBN},
{'Debug', Debug},
{'', PieTabla},
},
estilopiedetabla= 'display:none',
piedetabla = Categoria,
}
return ficha(TablaFicha)
end
-- Un subconjunto de la plantilla Ficha de personaje,
-- como sección para una ficha de personaje en distintos contextos
function p.fichaPersonajeSerie(frame)
-- :: Inicializador
_init(frame)
-- :: General
local NombreOrig = argumentos{'nombre_original', 'nombre original', 'real', 'nombrejapon', 'japanname', 'namejapon', 'nombre_ja', 'nombre_co', {propiedad, 'P1559', {['calificativo'] = 'P2440'}}, {propiedad, 'P1559', {['calificativo'] = 'P1705'}}}
local Alias = argumentos{'sobrenombre', 'alias', {propiedad, 'P1449', {['lista'] = 'nobullet'}}}
local OtrosNombres = argumentos{'otrosnombres', {propiedad, 'P4970', {['lista'] = 'nobullet'}}}
local FechaNac = argumentos{'nacido', {propiedad, 'P569', {['uno'] = 'sí'}}}
local FechaFall = argumentos{'fallecido', {propiedad, 'P570', {['uno'] = 'sí'}}}
local Genero = argumentos{'sexo', 'género', {propiedad, 'P21', {['uno'] = 'sí'}}}
local Edad = argumentos{'edad', {propiedad, 'P6249', {['formato'] = 'unidad', ['separador'] = ' '}}}
local Estatura = argumentos{'altura', 'metricheight'}
if Estatura then
Estatura = Estatura .. ' [[Metro|m]]'
else
Estatura = argumentos{{propiedad, 'P2048', {['formato'] = 'unidad', ['separador'] = ' '}}}
end
local Peso = argumentos{'peso', 'metricweight'}
if Peso then
Peso = Peso .. ' [[kg]]'
else
Peso = argumentos{{propiedad, 'P2067', {['formato'] = 'unidad', ['separador'] = ' '}}}
end
local Cabello = argumentos{'pelo', 'cabello', {propiedad, 'P1884', {['uno'] = 'sí'}}}
local Ojos = argumentos{'ojos', {propiedad, 'P1340', {['uno'] = 'sí'}}}
-- :: Datos de personaje
local Especie = argumentos{'especie'}
local Raza = argumentos{'raza', {propiedad, 'P4743', {['uno'] = 'sí'}}}
local Ocupacion = argumentos{'ocupación', {propiedad, 'P106'}}
local TituloCortes = argumentos{'título', {propiedad, 'P1035', {['lista'] = 'nobullet'}}}
local Equipamiento = argumentos{'equipamiento'}
local PoderesTitulo = 'Poderes'
local Poderes = argumentos{'especialidad', 'poderes'} or ''
if string.len(Poderes) > 342 then
Poderes = Poderes:gsub('<div [%w%"%%:;=%s]*>\n<div [%w%"%%:;=%s]*>[%w%s]*</div>',''):gsub('</div>\n</div>','</div>')
Poderes = seccionDesplegable(frame, PoderesTitulo, Poderes, ColorTituloFondo)
else
PoderesEtiqueta = PoderesTitulo
end
local HabilidadesTitulo = argumentos{'tipotecnicas'} or 'Habilidades'
local Habilidades = argumentos{'habilidad', 'ability'} or ''
if string.len(Habilidades) > 342 then
Habilidades = Habilidades:gsub('<div [%w%"%%:;=%s]*>\n<div [%w%"%%:;=%s]*>[%w%s]*</div>',''):gsub('</div>\n</div>','</div>')
Habilidades = seccionDesplegable(frame, HabilidadesTitulo, Habilidades, ColorTituloFondo)
else
HabilidadesEtiqueta = HabilidadesTitulo
end
local ExtraTitulo = argumentos{'tipoextra'} or 'Otras habilidades'
local ExtraDatos = argumentos{'extra'}
if string.len(Habilidades) > 342 then
ExtraDatos = ExtraDatos:gsub('<div [%w%"%%:;=%s]*>\n<div [%w%"%%:;=%s]*>[%w%s]*</div>',''):gsub('</div>\n</div>','</div>')
ExtraDatos = seccionDesplegable(frame, HabilidadesTitulo, ExtraDatos, ColorTituloFondo)
else
ExtraEtiqueta = ExtraTitulo
end
local Relevancia = argumentos{'relevancia'}
local Equipo = argumentos{'equipo', {propiedad, 'P463', {['lista'] = 'nobullet'}}}
local Organizacion = argumentos{'organización', {propiedad, 'P749', {['lista'] = 'nobullet'}}}
local Miembros = argumentos{'miembros'}
local ExMiembros = argumentos{'exmiembros'}
local Rango = argumentos{'rango'}
local Aliados = argumentos{'aliados'}
local Enemigos = argumentos{'enemigos'}
local Afiliaciones = argumentos{'afiliaciones', {propiedad, 'P1416', {['lista'] = 'nobullet'}}}
local AfilAnt = argumentos{'afiliaciones_anteriores'}
local Maestro = argumentos{'maestro', {propiedad, 'P1066', {['lista'] = 'nobullet'}}}
local Familia = argumentos{'familia', {propiedad, 'P53', {['lista'] = 'nobullet'}}}
local Conexiones = argumentos{'conexiones'}
local Conyuge = argumentos{'cónyuge', {propiedad, 'P26', {['lista'] = 'nobullet'}}}
local Pareja = argumentos{'pareja', {propiedad, 'P451', {['lista'] = 'nobullet'}}}
local Padres = argumentos{'padres'}
local Padre
local Madre
if not Padres then
Padres = {}
Padre = argumentos{'padre', {propiedad, 'P22', {['uno'] = 'sí'}}}
Madre = argumentos{'madre', {propiedad, 'P25', {['uno'] = 'sí'}}}
if Padre then table.insert(Padres, Padre) end
if Madre then table.insert(Padres, Madre) end
Padres = table.concat(Padres, '<br>')
end
local Hijos = argumentos{'hijos', {propiedad, 'P40', {['lista'] = 'nobullet'}}}
local Familiares = argumentos{'familiares', 'parientes', {propiedad, 'P1038', {['lista'] = 'nobullet'}}}
local Residencia = argumentos{'residencia', {propiedad, 'P551'}}
local Religion = argumentos{'religión', 'credo', {propiedad, 'P140'}}
local Nacionalidad = argumentos{'nacionalidad', {propiedad, 'P27'}}
local EstadoActual = argumentos{'estatus', 'status', 'estado'}
local Aldea = argumentos{'aldea'}
local Pais = argumentos{'país', 'pais', {propiedad, 'P495'}}
local Procedencia = argumentos{'procedencia'}
-- :: Autoría
local Autor = argumentos{'creador', 'autor', {propiedad, 'P170', {['lista'] = 'nobullet'}}}
local Desarrollador = argumentos{'desarrollador', 'developer', {propiedad, 'P178', {['lista'] = 'nobullet'}}}
local Interprete = argumentos{'actor', {propiedad, 'P175', {['lista'] = 'nobullet'}}}
local Ilustrador = argumentos{'ilustrador', 'dibujante', {propiedad, 'P110', {['lista'] = 'nobullet'}}}
local Voz = argumentos{'voz', 'doblador', 'seiyu', {propiedad, 'P725', {['lista'] = 'nobullet'}}}
local VozLatam = argumentos{'doblador_hispanoamérica', 'doblador hispanoamérica', 'doblador'}
local VozEsp = argumentos{'doblador_españa', 'doblador españa'}
local Editorial = argumentos{'editorial', {propiedad, 'P123', {['lista'] = 'nobullet'}}}
-- :: Fechas
local Debut = argumentos{'primera_aparición', 'primera', 'debut', 'fecha_salida', 'lanzamiento', {propiedad, 'P4584'}, {propiedad, 'P580'}, {propiedad, 'P577'}, {propiedad, 'P5204'}}
local Retiro = argumentos{'última_aparición', 'ultima', 'última', {propiedad, 'P582'}}
local MotivoRetiro = argumentos{'última_aparición_causa', 'causa'}
if MotivoRetiro then Retiro = Retiro .. '<small>(' .. MotivoRetiro .. ')</small>' end
local WebLanzamineto= argumentos{'web_lanzamiento'}
-- :: Cabecera y pie ficha
Titulo = argumentos{'anime', 'manga', 'serie', {obtenerEtiquetaWikidata, Entidad}}
-- :: Sobreescribir colores para personajes
ColorTituloFondo = '#69A0F3'
ColorTituloTexto = '#ffffff'
ColorEtiqueta = '#e7f0fd'
-- :: Estilos
ColorTituloFondo = argumentos{'piel', 'colorfondo'} or ColorTituloFondo
ColorTituloTexto = argumentos{'colortexto'} or ColorTituloTexto
EstiloTitulo = EstiloTitulo .. 'background-color:' .. ColorTituloFondo .. ';color:' .. ColorTituloTexto
EstiloEtiqueta = argumentos{'estiloetiqueta'} or EstiloEtiqueta .. ';background-color:' .. ColorEtiqueta
local TablaFicha = {
uni = Integrada,
subtitulo = Titulo,
estilo = EstiloTabla,
clasetitulo = ClaseTitulo,
estilotitulo = EstiloTitulo,
estilosubtitulo = EstiloTitulo,
estiloetiqueta = EstiloEtiqueta,
estilodatos = EstiloDatos,
{tipo="sección",
{'Nombre', NombreOrig},
{'Alias', Alias},
{'Otros nombres', OtrosNombres},
{'Edad', Edad},
{'Estatura', Estatura},
{'Peso', Peso},
{'Especie', Especie},
{'Raza', Raza},
{'Ocupacion', Ocupacion},
{'Relevancia', Relevancia},
{'Aldea', Aldea},
{'Pais', Pais},
{'Procedencia', Procedencia},
{'Maestro', Maestro},
{'Equipo', Equipo},
{'Organización', Organizacion},
{'Rango', Rango},
{'Familia', Familia},
{PoderesTitulo, Poderes},
{HabilidadesEtiqueta, Habilidades},
{ExtraTitulo, ExtraDatos},
}
}
return ficha(TablaFicha)
end
function p.fichaPersonajeHabilidades(frame)
-- :: Inicializador
_init(frame)
-- local HabilidadesTitulo = argumentos{'tipotecnicas'} or 'Habilidades especiales'
local HabilidadesTitulo = 'Habilidades especiales'
local HabilidadesEtiqueta
local Habilidades = argumentos{'listatecnicas', 'lista tecnicas'} or ''
if string.len(Habilidades) > 342 then
Habilidades = Habilidades:gsub('<div [%w%"%%:;=%s]*>\n<div [%w%"%%:;=%s]*>[%w%s]*</div>',''):gsub('</div>\n</div>','</div>')
Habilidades = seccionDesplegable(frame, HabilidadesTitulo, Habilidades, ColorEtiqueta)
else
HabilidadesEtiqueta = HabilidadesTitulo
end
local Habilidades1Titulo= argumentos{'tipoextra1'}
local Habilidades1Etiqueta
local Habilidades1 = argumentos{'listaextra1'} or ''
if string.len(Habilidades1) > 342 then
Habilidades1 = Habilidades1:gsub('<div [%w%"%%:;=%s]*>\n<div [%w%"%%:;=%s]*>[%w%s]*</div>',''):gsub('</div>\n</div>','</div>')
Habilidades1 = seccionDesplegable(frame, Habilidades1Titulo, Habilidades1, ColorEtiqueta)
else
Habilidades1Etiqueta= Habilidades1Titulo
end
local Habilidades2Titulo= argumentos{'tipoextra2'}
local Habilidades2Etiqueta
local Habilidades2 = argumentos{'listaextra2'} or ''
if string.len(Habilidades2) > 342 then
Habilidades2 = Habilidades2:gsub('<div [%w%"%%:;=%s]*>\n<div [%w%"%%:;=%s]*>[%w%s]*</div>',''):gsub('</div>\n</div>','</div>')
Habilidades2 = seccionDesplegable(frame, Habilidades2Titulo, Habilidades2, ColorEtiqueta)
else
Habilidades2Etiqueta= Habilidades2Titulo
end
-- :: Sobreescribir colores para personajes
ColorTituloFondo = '#69A0F3'
ColorTituloTexto = '#ffffff'
ColorEtiqueta = '#e7f0fd'
-- :: Estilos
ColorTituloFondo = argumentos{'piel', 'colorfondo'} or ColorTituloFondo
ColorTituloTexto = argumentos{'colortexto'} or ColorTituloTexto
EstiloTitulo = EstiloTitulo .. 'background-color:' .. ColorTituloFondo .. ';color:' .. ColorTituloTexto
EstiloEtiqueta = argumentos{'estiloetiqueta'} or EstiloEtiqueta .. ';background-color:' .. ColorEtiqueta
local TablaFicha = {
uni = Integrada,
estilo = EstiloTabla,
clasetitulo = ClaseTitulo,
estilotitulo = EstiloTitulo,
estilosubtitulo = EstiloTitulo,
estiloetiqueta = EstiloEtiqueta,
estilodatos = EstiloDatos,
{tipo="sección",
{HabilidadesEtiqueta, Habilidades},
{Habilidades1Etiqueta, Habilidades1},
{Habilidades2Etiqueta, Habilidades2},
},
}
return ficha(TablaFicha)
end
function p.fichaCierre(frame)
-- :: Inicializador
_init(frame)
local TablaFicha= {
tipo = 'cierre',
uni = Integrada,
piedetabla = PieTabla,
estilopiedetabla= EstiloPie
}
return ficha(TablaFicha)
end
function seccionDesplegable(frame, titulo, lista, colorTitulo)
if not lista then return false end
if not colorTitulo then colorTitulo = '#eeeeff' end
return frame:preprocess('{{Sección desplegable|estilotitulo=text-align:left;background-color:' .. colorTitulo .. ';padding:2px 0 2px 0|estilodatos=text-align:left|título=' .. (titulo or '') .. '|datos='.. lista .. '}}')
end
-- Función, propiedad() personalizada
function propiedad(idPropiedad, opciones, entidad)
if not entidad then entidad = Entidad end
if entidad and entidad.claims and entidad.claims[idPropiedad] then
if not opciones then
opciones = {['linkback']='sí'}
end
opciones['idioma'] = 'es'
local ValorPosicional = 1
if type(opciones['valor_posicional']) == 'number' then ValorPosicional = opciones['valor_posicional'] end
local ValorPosicionalCalif = 1
if type(opciones['valor_posicional_calif']) == 'number' then ValorPosicional = opciones['valor_posicional_calif'] end
local Calificador = opciones['calificador']
local Obj = elementoTabla(Entidad, 'claims', idPropiedad, ValorPosicional)
if Calificador then
Obj = elementoTabla(Obj, 'qualifiers', Calificador, ValorPosicionalCalif)
else
Obj = elementoTabla(Obj, 'mainsnak')
end
if opciones['formato'] == 'número' then
if elementoTabla(Obj, 'datavalue', 'type') == 'quantity' then
return formatoNumero(elementoTabla(Obj, 'mainsnak', 'datavalue', 'value', 'amount'))
end
-- Valores cuya unidad deba ir a la derecha, separada de un espacio
elseif opciones['formato'] == 'unidad' then
if elementoTabla(Entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue') then
return formatoNumero(elementoTabla(Entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue', 'value', 'amount')) .. ' - ' .. numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue'))
else
return numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue'))
end
-- Valores cuya unidad deba ir a la izquierda (ej, las monedas o divisas)
elseif opciones['formato'] == 'moneda' then
if elementoTabla(Entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue') then
return numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue'), false) .. ' - ' .. numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 2, 'mainsnak', 'datavalue'), false)
else
return numeroUnidad(elementoTabla(Entidad, 'claims', idPropiedad, 1, 'mainsnak', 'datavalue'), false)
end
-- Devolver el ID de la entidad, para propiedades de entidad
elseif opciones['formato'] == 'entidadID' then
return elementoTabla(Obj, 'datavalue', 'value', 'id')
end
-- Invocar a la función fallback si no se cumplen las condiciones anteriores
opciones.entityId = entidad.id
opciones.propiedad = idPropiedad
return ModuloWikidata.getPropiedad(opciones, entidad.claims[idPropiedad])
end
end
return p