Módulo:Documento ONU/pruebas
[crear]
Documentación del módulo
-- 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;\">« Resolución "..anterior.." </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;\"> Resolución "..siguiente.." »</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;\">« Resolución "..argus['período'].."/"..anterior.." </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;\"> Resolución "..argus['período'].."/"..siguiente.." »</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;\">« Resolución "..anterior.." ("..toRoman(argus['período'])..") </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;\"> Resolución "..siguiente.." ("..toRoman(argus['período'])..") »</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;\">« Resolución "..argus['período'].."/"..anterior.." </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;\"> Resolución "..argus['período'].."/"..siguiente.." »</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;\">« Resolución "..anterior.." ("..toRoman(argus['período'])..") </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;\"> Resolución "..siguiente.." ("..toRoman(argus['período'])..") »</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;\">« Resolución "..argus['período'].."/"..anterior.." </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;\"> Resolución "..argus['período'].."/"..siguiente.." »</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;\">« Resolución "..anterior.." ("..toRoman(argus['período'])..") </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;\"> Resolución "..siguiente.." ("..toRoman(argus['período'])..") »</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 [[Archivo:EPUB silk icon.svg|12px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&format=epub&page=" .. texto .."|Descargar en formato ePub]] [[Archivo:Document-pdf.svg|15px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&page=" .. texto .. "&format=pdf-a5|Descargar en formato PDF]] [[Archivo:Mobi_icon.svg|22px|link=//tools.wmflabs.org/wsexport/tool/book.php?lang=es&page=" .. texto .. "&format=mobi|Descargar en formato mobi]] — Fuente [[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