Módulo:AtalhoAnos

De Grêmiopédia, a enciclopédia do Grêmio
Ir para navegação Ir para pesquisar

A documentação para este módulo pode ser criada em Módulo:AtalhoAnos/doc

 -- Módulo:AtalhoAnos local p = {} -- Função para converter século em numeral romano local function getSeculoRomano(seculo) local seculo_romano_map = { [18] = "XVIII", [19] = "XIX", [20] = "XX", [21] = "XXI" } return seculo_romano_map[seculo] or "Desconhecido" end local function getDecadaString(ano) local decada = math.floor(ano / 10) * 10 local resultado = {} for i = -10, 10, 10 do local d = decada + i -- Calcula o século correto para a década local seculo_decada if d >= 2000 then seculo_decada = 21 -- Século XXI elseif d >= 1900 then seculo_decada = 20 -- Século XX else seculo_decada = math.ceil(d / 100) -- Séculos XIX ou anteriores end local seculo_romano_decada = getSeculoRomano(seculo_decada) local titulo = string.format("Década de %d - Século %s", d, seculo_romano_decada) -- Verifica existência da página local status, tituloObj = pcall(mw.title.new, titulo, 0) local existe = status and tituloObj and tituloObj.exists or false if i == 0 then if existe then table.insert(resultado, string.format("'''[[%s|Década de %d]]'''", titulo, d)) else table.insert(resultado, string.format("'''<font color=\"grey\">''Década de %d''</font>'''", d)) end else if existe then table.insert(resultado, string.format("[[%s|Década de %d]]", titulo, d)) else table.insert(resultado, string.format("<font color=\"grey\">''Década de %d''</font>", d)) end end end return table.concat(resultado, " - ") end local function getAnosString(ano) local resultado = {} for i = -2, 2 do local a = ano + i -- Verifica existência da página do ano local status, tituloObj = pcall(mw.title.new, tostring(a), 0) local existe = status and tituloObj and tituloObj.exists if i == 0 then table.insert(resultado, string.format("'''%d'''", a)) else if existe then table.insert(resultado, string.format("[[%d]]", a)) else table.insert(resultado, string.format("<font color=\"grey\">''%d''</font>", a)) end end end return table.concat(resultado, " - ") end function p.gerar(frame) local ano = tonumber(mw.title.getCurrentTitle().text) if not ano or ano < 1701 or ano > 2100 then return "<strong>Erro:</strong> Ano inválido ou fora do intervalo suportado (séculos XVIII a XXI)." end local decades = getDecadaString(ano) local years = getAnosString(ano) local tabela = "{| class=\"toccolours\" style=\"background:#F4F4FF\" align=\"center\"\n" tabela = tabela .. "|-\n| align=\"center\" |\n'''Calendário'''\n" tabela = tabela .. "|-\n| align=\"center\" |\n'''[[:Categoria:Décadas|Décadas]]''':<br /><small>" .. decades .. "</small>\n" tabela = tabela .. "|-\n| align=\"center\" |\n'''[[:Categoria:Anos|Anos]]''':<br/><small>" .. years .. "</small>\n" tabela = tabela .. "|}" return tabela end return p