Módulo:Lanzamientovj
Ir a la navegación
Ir a la búsqueda
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 Plantilla:Tl.
Funciones
- Plantilla:Code, la función pública destinada a ser invocada desde la plantilla.
- Plantilla:Code, la función pública principal destinada a ser usada por la función Plantilla:Code o ser incluída desde otros módulos (ej, Módulo:Ficha de videojuego.
- Plantilla:Code, función privada para obtener los datos desde Wikidata (es esencialmente una versión especial de la función Plantilla:Code con la propiedad ya establecida):
- Plantilla:Param la entidad de Wikidata correspondiente al artículo donde es usasda.
- Plantilla:Param la propiedad (P577).
- Plantilla:Param la tabla de valores, inicialmente vacía.
- Plantilla:Param el objeto Plantilla:Code con los datos de la propiedad.
- Plantilla:Param el objeto Plantilla:Code, donde Plantilla:Code son los índices de la tabla Plantilla:Param.
- Plantilla:Param el objeto Plantilla:Code, formateado para mostrar la fecha, donde Plantilla:Code son los índices de la tabla Plantilla:Param.
- Plantilla:Param el objeto Plantilla:Code del calificador (P291), para obtener la región en formato id de entidad de Wikidata.
- La tabla Plantilla:Param se va llenando de esta manera Plantilla:Code.
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