Módulo:Lanzamientovj

De Enciclopedia de conocimiento de la Iglesia de Dios
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


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