Calendar
Rivet comes with a Calendar package that provides 3 classes for printing calendar tables in various forms.
The Calendar class prints ascii calendar tables
package require Calendar set c [Calendar #auto] set c_txt [$c emit] puts $c_txt Jul 2010 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
When it comes to writing web pages HtmlCalendar is much fancier than Calendar. HtmlCalendar allows output customization of the cal table by controlling the markup and its attributes.
package require Calendar proc ::cal_cell_attributes { day month year weekday } { if {$weekday == 3} { return [list class curr_wkday] } } set htmlc [HtmlCalendar #auto] set html_txt [$htmlc emit -container {table class calendar} -current_weekday 3 \ -cell_function cal_cell_attributes ] puts $html_txt
with some CSS styling would print
Almost the whole HTML of HtmlCalendar can be customized. See the manual page for package Calendar for further reading