64 lines
1.6 KiB
Lua
64 lines
1.6 KiB
Lua
function print_cal(year)
|
|
local months={"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE",
|
|
"JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"}
|
|
local daysTitle="MO TU WE TH FR SA SU"
|
|
local daysPerMonth={31,28,31,30,31,30,31,31,30,31,30,31}
|
|
local startday=((year-1)*365+math.floor((year-1)/4)-math.floor((year-1)/100)+math.floor((year-1)/400))%7
|
|
if year%4==0 and year%100~=0 or year%400==0 then
|
|
daysPerMonth[2]=29
|
|
end
|
|
local sep=5
|
|
local monthwidth=daysTitle:len()
|
|
local calwidth=3*monthwidth+2*sep
|
|
|
|
function center(str, width)
|
|
local fill1=math.floor((width-str:len())/2)
|
|
local fill2=width-str:len()-fill1
|
|
return string.rep(" ",fill1)..str..string.rep(" ",fill2)
|
|
end
|
|
|
|
function makeMonth(name, skip,days)
|
|
local cal={
|
|
center(name,monthwidth),
|
|
daysTitle
|
|
}
|
|
local curday=1-skip
|
|
while #cal<9 do
|
|
line={}
|
|
for i=1,7 do
|
|
if curday<1 or curday>days then
|
|
line[i]=" "
|
|
else
|
|
line[i]=string.format("%2d",curday)
|
|
end
|
|
curday=curday+1
|
|
end
|
|
cal[#cal+1]=table.concat(line," ")
|
|
end
|
|
return cal
|
|
end
|
|
|
|
local calendar={}
|
|
for i,month in ipairs(months) do
|
|
local dpm=daysPerMonth[i]
|
|
calendar[i]=makeMonth(month, startday, dpm)
|
|
startday=(startday+dpm)%7
|
|
end
|
|
|
|
|
|
print(center("[SNOOPY]",calwidth),"\n")
|
|
print(center("--- "..year.." ---",calwidth),"\n")
|
|
|
|
for q=0,3 do
|
|
for l=1,9 do
|
|
line={}
|
|
for m=1,3 do
|
|
line[m]=calendar[q*3+m][l]
|
|
end
|
|
print(table.concat(line,string.rep(" ",sep)))
|
|
end
|
|
end
|
|
end
|
|
|
|
print_cal(1969)
|