#!/usr/bin/ruby
var mons = [
31,
28,
31,
30,
31,
30,
31,
31,
30,
31,
30,
31,
]
var t = Time.local
var day = t.day;
var mon = t.mon;
var year = t.year;
if (year % 400 == 0 || (year % 4 == 0 && (year % 100 != 0))) {
mons[1] = 29
}
year--
var st = (1 + year*365 + year//4 - year//100 + year//400);
{|i| st += mons[i] } * (mon-1)
#
## Displaying the calendar
#
var monName = t.strftime("%B");
"%*s\n%s\n".printf(
(monName.len + 5) / 2 + 11,
"%s %d".sprintf(monName, year + 1),
"Su Mo Tu We Th Fr Sa",
);
' ' * 3 * (st % 7) -> print;
for i in (1 .. mons[mon-1]) {
printf(i == day ? "\e[7m%2d\e[0m " : "%2d ", i);
st+i %% 7 && ((i != mons[mon-1]) && print "\n");
}
print "\n"