Módulo:Lanzamientovj
Esta documentación explica el funcionamiento del módulo en un contexto técnico. Para instrucciones sobre el uso de la plantilla asociada, véase la documentación de la misma en {{Lanzamientovj}}
.
Funciones
p.lanzamientovj()
, la función pública destinada a ser invocada desde la plantilla.p.main()
, la función pública principal destinada a ser usada por la funciónp.lanzamientovj()
o ser incluída desde otros módulos (ej, Módulo:Ficha de videojuego.lanzamientoWD()
, función privada para obtener los datos desde Wikidata (es esencialmente una versión especial de la funciónpropiedad()
con la propiedad ya establecida):|Entidad=
la entidad de Wikidata correspondiente al artículo donde es usasda.|idPropiedad=P577
la propiedad fecha de publicación (P577).|Valores={}
la tabla de valores, inicialmente vacía.|Obj=
el objetoEntidad.claims.idPropiedad
con los datos de la propiedad.|Regiones=
el objetoObj.v.qualifiers, P291
, dondev
son los índices de la tabla|Obj=
.|Valor=
el objetoRegiones.vv.datavalue.value
, formateado para mostrar la fecha, dondevv
son los índices de la tabla|Regiones=
.|Region=
el objetoRegiones.vv.objeto datavalue.value.id
del calificador lugar de publicación (P291), para obtener la región en formato id de entidad de Wikidata.- La tabla
|valores=
se va llenando de esta maneraValores[Region] = Valor
.
local p = {}
local Entidad
local ModuloArgumentos = require('Módulo:Argumentos')
local elementoTabla = require('Módulo:Tablas').elemento
local FormatoFechaHora = require('Módulo:Wikidata/Fecha').FormateaFechaHora
local Datos = mw.loadData('Módulo:Lanzamientovj/datos')
-- Función pública para ser llamada desde la plantilla {{clasificaciónvj}}
function p.lanzamientovj(frame)
argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame)
Entidad = mw.wikibase.getEntity(argumentos.id) or {}
return p.main()
end
-- Función pública para ser incluída dentro de otros módulos
function p.main(entidad)
if not Entidad then Entidad = entidad end
local Valores = {}
-- :: Sintraxis alternativa (parámetros posicionales, tres)
if argumentos[1] and argumentos[2] and argumentos[3] then
local Valor = '<li><sup>[[' .. argumentos[1] .. '|' .. argumentos[2] .. ']]</sup> ' .. argumentos[3] .. '</li>'
local Categoria = (function()
if argumentos[4] then return '[[Categoría:Wikipedia:Artículos que transcluyen Plantilla:Lanzamientovj usando una sintaxis incorrecta]]' end
return '[[Categoría:Wikipedia:Artículos que transcluyen Plantilla:Lanzamientovj usando la sintaxis de parámetros posicionales]]'
end)()
table.insert(Valores, Valor..Categoria)
-- :: Sintraxis alternativa (parámetros posicionales, dos)
elseif argumentos[1] and argumentos[2] then
local Valor = '<li><sup>' .. argumentos[1] .. '</sup> ' .. argumentos[2] .. '</li>'
local Categoria = '[[Categoría:Wikipedia:Artículos que transcluyen Plantilla:Lanzamientovj usando la sintaxis de parámetros posicionales]]'
table.insert(Valores, Valor..Categoria)
-- :: Sintaxis estándar (parámetros nombrados por código de región)
else
for k, v in pairs(Datos) do
local Valor =
(function()
for kk, vv in pairs(v[2]) do
if argumentos[vv] then return argumentos[vv] end
end
end)()
or
(function()
for kk, vv in pairs((v[3] or {})) do
if argumentos[vv] then return argumentos[vv] end
end
end)()
if Valor then
Etiqueta= (function()
if v[1] == 'DESC' then return '<small><sup><abbr title="Fecha desconocida">?</abbr></sup></small>' end
if v[1] == 'WW' then return '<small><sup><abbr title="Lanzamiento mundial">WW</abbr></sup></small>' end
if v[4] then return '<small><sup>[[' .. v[4] .. '|' .. v[1] ..']]</sup></small>' end
return '<small><sup>' .. v[1] .. '</sup></small>'
end)()
table.insert(Valores, '<li>' .. Etiqueta .. ' '.. Valor ..'</li>')
end
end
end
-- :: Desde Wikidata
if #Valores == 0 then
local Obj = elementoTabla(Entidad, 'claims', 'P577')
if Obj then
for k, v in pairs(Obj) do
Valor = FormatoFechaHora(elementoTabla(v, 'mainsnak', 'datavalue', 'value'), {['enlace']='no'})
Region = elementoTabla(v, 'qualifiers', 'P291', 1, 'datavalue', 'value', 'id')
Etiqueta= (function()
for kk, vv in pairs(Datos) do
if Region and (Region == vv[3][1] or Region == vv[3][2] or Region == vv[3][3]) then return '<small><sup>[[' .. vv[4] .. '|' .. vv[1] ..']]</sup></small>' end
return '<small><sup><abbr title="Lanzamiento mundial">WW</abbr></sup></small>'
end
end)() or ''
table.insert(Valores, '<li>' .. Etiqueta .. ' '.. Valor ..'</li>')
end
end
end
if #Valores > 0 then
local Apertura = '<ul style="list-style: none; line-height: inherit; margin: 0px;">'
local Cierre = '</ul>'
return Apertura..table.concat(Valores)..Cierre
end
end
return p