Módulo:Documento ONU/pruebas

Documentación del módulo
Por favor, añade las categorías a la subpágina de documentación.
(subpáginas - enlaces)
-- Módulo en desarrollo
-- TODO Detectar automáticamente tipo de resolución, período y número desde el título de la página
local p = {}

local resoluciones = { ['A/RES'] = 'Asamblea General de las Naciones Unidas' , 
	['E/RES'] = 'Consejo Económico y Social', 
	['S/RES'] = 'Consejo de eguridad', 
	['A/HRC/RES'] = 'Consejo de Derechos Humanos'  }
local preposiciones = { ['A/RES'] = 'de la' , 
	['E/RES'] = 'del', 
	['S/RES'] = 'del', 
	['A/HRC/RES'] = 'del'  }
local articulos = { ['A/RES'] = 'la' , 
	['E/RES'] = 'el', 
	['S/RES'] = 'el', 
	['A/HRC/RES'] = 'el'  }

function toRoman(number)
	local romanNumbers1 = {'', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X'}
	local romanNumbers2 = {'', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'}
	return romanNumbers2[math.floor(math.abs(number) / 10) + 1] .. romanNumbers1[math.floor(math.abs(number) % 10) + 1]
end

function p.documento(frame)
	local argus = {}
	local ordenar = ''
        local fuente= 'https://undocs.org/es/'
	for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
		if v ~= '' and type(k) ~= 'number' then
			argus[mw.ustring.lower(k)] = v -- todos los parámetros en minúsculas por defecto: 
		end
	end

    local enlacePagina = mw.title.getCurrentTitle().text
    local texto=""
    texto=mw.uri.encode(enlacePagina,QUERY)
    local html = mw.html.create() -- cuerpo principal de la plantilla
    local divgrande = html:tag('div'):addClass('noprint')  -- div principal que contiene al resto 
    local tabla = divgrande:tag('table'):css('font-size','87%'):css('width', '100%')
    local fila1 = tabla:tag('tr')
    local celda1=fila1:tag('td'):attr('width','15%'):css('text-align','left')
    local celda2=fila1:tag('td'):css('text-align','center')
    local celda3=fila1:tag('td'):attr('width','15%'):css('text-align','right')
    local fila2=tabla:tag('tr')
    local celda4=fila2:tag('td'):attr('colspan','3'):css('font-size','120%'):css('text-align','center'):css('background','#B7C4E4'):css('border','1px solid #4488cc'):css('padding','12px')
	
	local tipo = argus['tipo']    
    local anterior = nil
    local siguiente = nil
    
    if argus['anterior']~='' and argus['anterior']~=nil then --Para el caso de que la resolución anterior no siga la regularidad numérica
		anterior=argus['anterior'] --se pasa el número por parámetro de la plantilla
	else
		if tonumber(argus['número'])~=nil then
			anterior= tostring(tonumber(argus['número'])-1) --Para número de resolución anterior
		end
    end

	if argus['siguiente']~='' and argus['siguiente']~=nil then --Para el caso de que la resolución siguiente no siga la regularidad numérica
		siguiente=argus['siguiente'] --se pasa el número por parámetro de la plantilla
	else
		if tonumber(argus['número'])~=nil then
			siguiente=tostring(tonumber(argus['número'])+1) --Para número de resolución siguiente
		end
    end
	
-- Según tipos de resoluciones    
    if tipo == 'S/RES'   then --Resoluciones del Consejo de Seguridad
        if argus['número']>'1' and anterior~=nil then 
            celda1:wikitext("[[Resolución "..anterior.." ".. preposiciones[tipo].." "..resoluciones[tipo].." de las Naciones Unidas|<span style=\"color: darkgrey;\">«&nbsp;Resolución "..anterior.."&nbsp;</span>]]")
        end
    	celda2:wikitext("[[Resoluciones del Consejo de Seguridad (ONU)|<span style=\"color: darkgrey;\">Lista de resoluciones</span>]]")
    	if siguiente~=nil then
	    	celda3:wikitext("[[Resolución "..siguiente.." ".. preposiciones[tipo].." "..resoluciones[tipo].."|<span style=\"color: darkgrey;\">&nbsp;Resolución "..siguiente.."&nbsp;»</span>]]")
		end	
		celda4:wikitext("<span style=\"font-size: 120%; font-weight: bold; font-style: oblique;\"><span style=\"font-size: 115%;\">Resolución "..argus['número'].."</span> ".. preposiciones[tipo].." "..resoluciones[tipo]..",</span><br/>")
        celda4:wikitext("aprobada por ".. articulos[tipo].." "..resoluciones[tipo]..".")
        if argus['sesión']~='' and argus['sesión']~=nil then
        	celda4:wikitext(" en su ".. argus['sesión']..".ª sesión")
        	if argus['fecha']~='' and argus['fecha']~=nil then
        		celda4:wikitext(", celebrada el "..argus['fecha'].." de " ..argus['año']..".")
        	end
        	if argus['nota']~='' and argus['nota']~=nil then
        		celda4:wikitext(argus['nota'])
        	end
    	end
        fuente=fuente .. tipo .."/" .. argus['número'] .. "%20(" .. argus['año'] ..")"
    	-- Categoría específica
    	if tonumber(argus['número'])~=nil then
	    	ordenar=string.format('Resolución %04d '.. preposiciones[tipo]..' '..resoluciones[tipo],argus['número'])
		end
    	if mw.title.getCurrentTitle().namespace==0 then
            html:wikitext("[[Categoría:Resoluciones ".. preposiciones[tipo].." "..resoluciones[tipo].."|"..ordenar.."]]")
    	end
    -- FIN S/RES
    elseif argus['tipo'] == 'A/RES'   then --Resoluciones de la Asamblea General
		--TODO Falta enlazar ultima resolución de un periodo en siguiente, con la primera del siguiente período
    	celda2:wikitext("[[Resoluciones aprobadas por la Asamblea General de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|<span style=\"color: darkgrey;\">Resoluciones aprobadas en el "..argus['período'].."º período de sesiones</span>]]")
		celda4:wikitext("<span style=\"font-size: 120%; font-weight: bold; font-style: oblique;\"><span style=\"font-size: 115%;\">")
		-- Si el periodo es mayor a 30
		if tonumber(argus['período'])>30 then --cambia la forma de denominación de resolucion, utilizando números para el período
			celda4:wikitext("Resolución "..argus['período'].."/"..argus['número'].."</span> de la Asamblea General de las Naciones Unidas,</span><br/>")
            if anterior~=nil then
            	celda1:wikitext("[[Resolución "..argus['período'].."/"..anterior.." de la Asamblea General de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">«&nbsp;Resolución "..argus['período'].."/"..anterior.."&nbsp;</span>]]")
            end
    		if siguiente~=nil then
	    		celda3:wikitext("[[Resolución "..argus['período'].."/"..siguiente.." de la Asamblea General de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">&nbsp;Resolución "..argus['período'].."/"..siguiente.."&nbsp;»</span>]]")
            end
            fuente=fuente .. "A/RES/" .. argus['período'] .. "/" .. argus['número'] 
		else -- hasta el período 30, se utilizaban números romanos del I al XXX
            fuente=fuente .. "A/RES/" .. argus['número'] .. "("..toRoman(argus['período'])..")"
			celda4:wikitext("Resolución "..argus['número'].." ("..toRoman(argus['período'])..") </span> de la Asamblea General de las Naciones Unidas,</span><br/>")
            if (argus['período']~='1' or argus['número']~='1') and anterior~=nil then
            	celda1:wikitext("[[Resolución "..anterior.." ("..toRoman(argus['período'])..") de la Asamblea General de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">«&nbsp;Resolución "..anterior.." ("..toRoman(argus['período'])..")&nbsp;</span>]]")
            end
            if siguiente~=nil then
		    	celda3:wikitext("[[Resolución "..siguiente.." ("..toRoman(argus['período'])..") de la Asamblea General de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">&nbsp;Resolución "..siguiente.." ("..toRoman(argus['período'])..")&nbsp;»</span>]]")
			end
		end
        if argus['sesión']~='' and argus['sesión']~=nil then
        	celda4:wikitext("aprobada por la ".. argus['sesión']..".ª sesión plenaria")
        	if argus['fecha']~='' and argus['fecha']~=nil then
        		celda4:wikitext(" del "..argus['fecha'].." de " ..argus['año']..".")
        	end
    	end
        
    	--Categoría específica
    	if tonumber(argus['número'])~=nil then
	    	ordenar=string.format('Resolución %04d de la Asamblea General de las Naciones Unidas',argus['número'])
	    end
		if mw.title.getCurrentTitle().namespace==0 then    
            html:wikitext("[[Categoría:Resoluciones aprobadas por la Asamblea General de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|"..ordenar.."]]")	
		end
    --FIN A/RES
	elseif argus['tipo'] == 'A/HRC/RES' then --Resoluciones del Consejo de Derechos Humanos, ejemplo https://undocs.org/es/A/HRC/RES/26/20
		celda2:wikitext("[[Resoluciones aprobadas por el Consejo de Derechos Humanos de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|<span style=\"color: darkgrey;\">Resoluciones aprobadas en el "..argus['período'].."º período de sesiones</span>]]")
		celda4:wikitext("<span style=\"font-size: 120%; font-weight: bold; font-style: oblique;\"><span style=\"font-size: 115%;\">")
		-- Si el periodo es mayor a 30
		if tonumber(argus['período'])>30 then --cambia la forma de denominación de resolucion, utilizando números para el período
			celda4:wikitext("Resolución "..argus['período'].."/"..argus['número'].."</span> del Consejo de Derechos Humanos de las Naciones Unidas,</span><br/>")
            if anterior~=nil then
            	celda1:wikitext("[[Resolución "..argus['período'].."/"..anterior.." del Consejo de Derechos Humanos de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">«&nbsp;Resolución "..argus['período'].."/"..anterior.."&nbsp;</span>]]")
            end
    		if siguiente~=nil then
	    		celda3:wikitext("[[Resolución "..argus['período'].."/"..siguiente.." del Consejo de Derechos Humanos de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">&nbsp;Resolución "..argus['período'].."/"..siguiente.."&nbsp;»</span>]]")
            end
            fuente=fuente .. "A/HRC/RES/" .. argus['período'] .. "/" .. argus['número'] 
		else -- hasta el período 30, se utilizaban números romanos del I al XXX
                        fuente=fuente .. "A/HRC/RES/" .. argus['número'] .. "("..toRoman(argus['período'])..")"
			celda4:wikitext("Resolución "..argus['número'].." ("..toRoman(argus['período'])..") </span> del Consejo de Derechos Humanos de las Naciones Unidas,</span><br/>")
            if (argus['período']~='1' or argus['número']~='1') and anterior~=nil then
            	celda1:wikitext("[[Resolución "..anterior.." ("..toRoman(argus['período'])..") del Consejo de Derechos Humanos de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">«&nbsp;Resolución "..anterior.." ("..toRoman(argus['período'])..")&nbsp;</span>]]")
            end
            if siguiente~=nil then
	    		celda3:wikitext("[[Resolución "..siguiente.." ("..toRoman(argus['período'])..") del Consejo de Derechos Humanos de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">&nbsp;Resolución "..siguiente.." ("..toRoman(argus['período'])..")&nbsp;»</span>]]")
	    	end
		end
        if argus['fecha']~='' and argus['fecha']~=nil then
        	celda4:wikitext(" Aprobada el "..argus['fecha'].." de " ..argus['año']..".")
        end
	
		--Categoría específica
		if tonumber(argus['número'])~=nil then
	    	ordenar=string.format('Resolución %04d del Consejo de Derechos Humanos de las Naciones Unidas',argus['número'])
		end
		if mw.title.getCurrentTitle().namespace==0 then    
            html:wikitext("[[Categoría:Resoluciones aprobadas por el Consejo de Derechos Humanos de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|"..ordenar.."]]")	
		end
    -- FIN A/HRC/RES
	elseif argus['tipo'] == 'E/RES'   then --Resoluciones del Consejo Económico y Social
		--TODO Falta enlazar ultima resolución de un periodo en siguiente, con la primera del siguiente período
    	celda2:wikitext("[[Resoluciones aprobadas por el Consejo Económico y Social durante el "..argus['período'].."º período de sesiones|<span style=\"color: darkgrey;\">Resoluciones aprobadas en el "..argus['período'].."º período de sesiones</span>]]")
		celda4:wikitext("<span style=\"font-size: 120%; font-weight: bold; font-style: oblique;\"><span style=\"font-size: 115%;\">")
		-- Si el periodo es mayor a 30
		if tonumber(argus['período'])>30 then --cambia la forma de denominación de resolucion, utilizando números para el período
			celda4:wikitext("Resolución "..argus['período'].."/"..argus['número'].."</span> de el Consejo Económico y Social de las Naciones Unidas,</span><br/>")
            if anterior~=nil then
            	celda1:wikitext("[[Resolución "..argus['período'].."/"..anterior.." del Consejo Económico y Social de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">«&nbsp;Resolución "..argus['período'].."/"..anterior.."&nbsp;</span>]]")
            end
    		if siguiente~=nil then
	    		celda3:wikitext("[[Resolución "..argus['período'].."/"..siguiente.." del Consejo Económico y Social de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">&nbsp;Resolución "..argus['período'].."/"..siguiente.."&nbsp;»</span>]]")
            end
            fuente=fuente .. "E/RES/" .. argus['período'] .. "/" .. argus['número'] 
		else -- hasta el período 30, se utilizaban números romanos del I al XXX
            fuente=fuente .. "E/RES/" .. argus['número'] .. "("..toRoman(argus['período'])..")"
			celda4:wikitext("Resolución "..argus['número'].." ("..toRoman(argus['período'])..") </span> del Consejo Económico y Social de las Naciones Unidas,</span><br/>")
            if (argus['período']~='1' or argus['número']~='1') and anterior~=nil then
            	celda1:wikitext("[[Resolución "..anterior.." ("..toRoman(argus['período'])..") del Consejo Económico y Social de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">«&nbsp;Resolución "..anterior.." ("..toRoman(argus['período'])..")&nbsp;</span>]]")
            end
            if siguiente~=nil then
		    	celda3:wikitext("[[Resolución "..siguiente.." ("..toRoman(argus['período'])..") del Consejo Económico y Social de la Organización de las Naciones Unidas|<span style=\"color: darkgrey;\">&nbsp;Resolución "..siguiente.." ("..toRoman(argus['período'])..")&nbsp;»</span>]]")
			end
		end
        if argus['fecha']~='' and argus['fecha']~=nil then
        	celda4:wikitext(" Aprobada el "..argus['fecha'].." de " ..argus['año']..".")
        end
        
    	--Categoría específica
    	if tonumber(argus['número'])~=nil then
	    	ordenar=string.format('Resolución %04d del Consejo Económico y Social de las Naciones Unidas',argus['número'])
	    end
		if mw.title.getCurrentTitle().namespace==0 then    
            html:wikitext("[[Categoría:Resoluciones aprobadas por el Consejo Económico y Social de las Naciones Unidas durante el "..argus['período'].."º período de sesiones|"..ordenar.."]]")	
		end
		--Fin E/RES
    end

    celda4:wikitext("<div style=\"font-size:80%\">Descargar como &nbsp;[[Archivo:EPUB silk icon.svg|12px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&format=epub&page=" .. texto .."|Descargar en formato ePub]]&nbsp;[[Archivo:Document-pdf.svg|15px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&page=" .. texto .. "&format=pdf-a5|Descargar en formato PDF]]&nbsp;[[Archivo:Mobi_icon.svg|22px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&page=" .. texto .. "&format=mobi|Descargar en formato mobi]]&nbsp;&#8212;&nbsp;Fuente&nbsp;[[Archivo:Logo of the United Nations (B&W).svg|18px|link=" .. fuente .. "|Fuente ONU]]</div>")
    --Categoría común
    if mw.title.getCurrentTitle().namespace==0 then
	html:wikitext("[[Categoría:D"..argus['año'].."|"..ordenar.."]]")
    end
    return tostring(html)
end

 
return p