Módulo:Ano

De Grêmiopédia, a enciclopédia do Grêmio
Revisão de 14h32min de 21 de março de 2025 por Júnior Morais (discussão | contribs)
Ir para navegação Ir para pesquisar

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

 local p = {} -- Converte número decimal em romano function p.toRoman(n) local romans = { {1000, 'M'}, {900, 'CM'}, {500, 'D'}, {400, 'CD'}, {100, 'C'}, {90, 'XC'}, {50, 'L'}, {40, 'XL'}, {10, 'X'}, {9, 'IX'}, {5, 'V'}, {4, 'IV'}, {1, 'I'} } local result = '' for _, pair in ipairs(romans) do while n >= pair[1] do result = result .. pair[2] n = n - pair[1] end end return result end -- Retorna o dia da semana em português local dias_semana = { ["Sunday"] = "domingo", ["Monday"] = "segunda-feira", ["Tuesday"] = "terça-feira", ["Wednesday"] = "quarta-feira", ["Thursday"] = "quinta-feira", ["Friday"] = "sexta-feira", ["Saturday"] = "sábado" } -- Função principal function p.descricao(frame) local ano = tonumber(frame.args[1]) if not ano then return "Ano inválido." end local romano = p.toRoman(ano) -- Checa se é ano bissexto local bissexto = (ano % 4 == 0 and (ano % 100 ~= 0 or ano % 400 == 0)) local dias = bissexto and 366 or 365 local semanas = math.floor(dias / 7) -- Calcula o dia da semana de início e fim local data_inicio = os.date("*t", os.time{year=ano, month=1, day=1}) local data_fim = os.date("*t", os.time{year=ano, month=12, day=31}) local dia_inicio = dias_semana[os.date("%A", os.time(data_inicio))] local dia_fim = dias_semana[os.date("%A", os.time(data_fim))] return string.format("%d (%s, na numeração romana) foi um ano de %d dias, do Calendário Gregoriano, teve %d semanas, com início em uma %s e término em uma %s.", ano, romano, dias, semanas, dia_inicio, dia_fim ) end return p