[
proc month {{m ""} {func ""} {y ""}} {
if {$m == ""} {
set m [clock format [clock scan now] -format %m]
}
if {$y != ""} {
set y "/$y"
}
#set year [clock format [clock scan "$m/1$y"] -format %Y]
set daynum [expr [clock format [clock scan "$m/1$y"] -format %u] % 7]
append cal "
"
append cal "| [lindex {January February March April May June July August September October November December} [expr $m - 1]] |
"
append cal | Su | Mo | Tu | We | Th | Fr | Sa |
append cal "[string repeat | $daynum]"
for {set day 1} {![catch "clock scan $m/$day$y"]} {incr day} {
set daynum [expr ($daynum + 1) % 7]
if {$daynum == 1} {
append cal
}
if {$func == ""} {
append cal "| $day | "
} else {
append cal "[eval $func $year $month $day] | "
}
}
append cal
append cal "
"
return $cal
}
proc year {{year ""}} {
set html ""
for {set i 1} {$i < 13} {incr i} {
if {($i % 4) == 1} {
append html "
"
}
append html "| [month $i "" $year] | "
}
append html
return $html
}
return [year]
]