Módulo:Info/calendário
Aspeto
Este módulo não apresenta nenhuma documentação. Por favor, documente-o caso o saiba usar ou tenha conhecimentos para tal. |
-- Extensão do Módulo:Info para adicionar função de calendário
local ext = {}
ext. especial = {}
ext.especial['calendário'] = function(campo)
if not campo[1] then
return nil
end
local mes, ano = mw.ustring.match(campo[1], '(%d%d?)[^%d]+(%d%d%d%d)')
if not mes or tonumber(mes) > 12 or tonumber(mes) == 0 then
table.insert(debug.erros, 'mês do calendário não foi informado corretamente, use um número entre 1 e 12')
return nil
end
mes, ano = tonumber(mes), tonumber(ano)
nomedomes = ({'janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro',
'outubro', 'novembro', 'dezembro'})[mes]
local diasnomes = mes == 2 and ano % 4 == 0 and (ano % 100 ~= 0 or ano % 400 == 0) and 29 or
("\31\28\31\30\31\30\31\31\30\31\30\31"):byte(mes)
local dia1 = os.date('*t', os.time{year=ano, month=mes, day=1})['wday']
local d = 1
local semanas = {}
while d <= diasnomes do -- semana
local semana = {}
if #semanas == 0 then
local ds = 1
while ds < dia1 do
table.insert(semana, '')
ds = ds + 1
end
end
while #semana < 7 do -- dia
if d <= diasnomes then
table.insert(semana, '[[' .. d .. ' de ' .. nomedomes .. '|' .. d .. ']]')
d = d + 1
else
table.insert(semana, '')
end
end
table.insert(semanas, '<tr><td>' .. table.concat(semana, '</td><td>') .. '</td></tr>')
end
local tabela = {'<table style="width:100%; border-collapse:collapse"><tr>'}
for n, d in ipairs{'D', 'S', 'T', 'Q', 'Q', 'S', 'S'} do
table.insert(tabela, '<td style="font-weight:bold; ' .. cor3 .. '">' .. d .. '</td>')
end
return {table.concat(tabela, '') .. '</tr>\n' .. table.concat(semanas, '\n') .. '</table>'}
end
return ext