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ón p.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ón propiedad() 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 objeto Entidad.claims.idPropiedad con los datos de la propiedad.
    • |Regiones= el objeto Obj.v.qualifiers, P291, donde v son los índices de la tabla |Obj=.
    • |Valor= el objeto Regiones.vv.datavalue.value, formateado para mostrar la fecha, donde vv son los índices de la tabla |Regiones=.
    • |Region= el objeto Regiones.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 manera Valores[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>&nbsp;' .. 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>&nbsp;' .. 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