Módulo:Ano

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: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 -- Tabela com dias 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" } -- Tabela com o gênero de cada dia da semana local genero_dia = { ["domingo"] = "m", ["segunda-feira"] = "f", ["terça-feira"] = "f", ["quarta-feira"] = "f", ["quinta-feira"] = "f", ["sexta-feira"] = "f", ["sábado"] = "m" } -- Função para obter o artigo adequado local function artigo_adequado(dia) return genero_dia[dia] == "m" and "um" or "uma" end -- 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))] local artigo_inicio = artigo_adequado(dia_inicio) local artigo_fim = artigo_adequado(dia_fim) -- Verifica se o ano é o ano corrente local ano_atual = tonumber(os.date("%Y")) local frase if ano == ano_atual then frase = string.format("'''%d''' ('''%s''', na numeração romana) é um ano de '''%d dias''', do Calendário Gregoriano, tem %d semanas, com início em %s '''%s''' e término em %s '''%s'''.", ano, romano, dias, semanas, artigo_inicio, dia_inicio, artigo_fim, dia_fim ) else frase = 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 %s '''%s''' e término em %s '''%s'''.", ano, romano, dias, semanas, artigo_inicio, dia_inicio, artigo_fim, dia_fim ) end return frase end return p