From e87d33de50e8a5533fa69dc185122ceaefba3305 Mon Sep 17 00:00:00 2001 From: "David F. Skoll" Date: Fri, 14 Nov 2008 16:56:08 -0500 Subject: [PATCH] Handle the WEEK special. --- scripts/tkremind | 7 +++++++ src/rem2ps.c | 11 +++++++++++ www/rem2html | 17 ++++++++++++++--- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/scripts/tkremind b/scripts/tkremind index 0abed6cd..88c2be79 100755 --- a/scripts/tkremind +++ b/scripts/tkremind @@ -753,6 +753,13 @@ proc FillCalWindow {} { set month [string trimleft $month 0] set extratags "" switch -exact -- $type { + "WEEK" { + set stuff [string trimleft $stuff] + set stuff [string trimright $stuff] + set label [expr $firstWkday + $day - 1] + .cal.l$label configure -text "$day (W$stuff)" + continue + } "SHADE" { DoShadeSpecial $n $stuff continue diff --git a/src/rem2ps.c b/src/rem2ps.c index d4016387..4524fa0b 100644 --- a/src/rem2ps.c +++ b/src/rem2ps.c @@ -30,6 +30,7 @@ #define SPECIAL_MOON 3 #define SPECIAL_SHADE 4 #define SPECIAL_COLOR 5 +#define SPECIAL_WEEK 6 typedef struct calentry { struct calentry *next; @@ -306,6 +307,7 @@ void DoPsCal(void) if (!strcmp(passthru, "PostScript") || !strcmp(passthru, "PSFile") || !strcmp(passthru, "MOON") || + !strcmp(passthru, "WEEK") || !strcmp(passthru, "SHADE")) { is_ps = 1; } @@ -324,6 +326,8 @@ void DoPsCal(void) c->special = SPECIAL_SHADE; } else if (!strcmp(passthru, "MOON")) { c->special = SPECIAL_MOON; + } else if (!strcmp(passthru, "WEEK")) { + c->special = SPECIAL_WEEK; } else { c->special = SPECIAL_PSFILE; } @@ -954,6 +958,13 @@ int DoQueuedPs(void) r/255.0, g/255.0, b/255.0); break; + case SPECIAL_WEEK: /* Week number */ + num = sscanf(e->entry+fnoff, "%d", &phase); + if (num == 1) { + printf("gsave Border Border moveto /EntryFont findfont EntrySize 1.2 div scalefont setfont ( (W %d)) show grestore\n", + phase); + } + break; case SPECIAL_MOON: /* Moon phase */ num = sscanf(e->entry+fnoff, "%d %d %d", &phase, &moonsize, &fontsize); diff --git a/www/rem2html b/www/rem2html index 6b15c76c..c186b695 100755 --- a/www/rem2html +++ b/www/rem2html @@ -9,7 +9,7 @@ my %Options; my $rem2html_version = '2.0'; -my($days, $shades, $moons, $classes, $Month, $Year, $Numdays, $Firstwkday, $Mondayfirst, +my($days, $shades, $moons, $classes, $Month, $Year, $Numdays, $Firstwkday, $Mondayfirst, $weeks, @Daynames, $Nextmon, $Nextlen, $Prevmon, $Prevlen); my $TIDY_PROGNAME = $0; @@ -186,6 +186,7 @@ sub parse_input undef $shades; undef $moons; undef $classes; + undef $weeks; my $found_data = 0; while() { @@ -232,10 +233,16 @@ sub parse_input next unless m/^(\d*).(\d*).(\d*)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*(.*)$/; my ($y, $m, $d, $special, $tag, $duration, $time, $body) = ($1, $2, $3, $4, $5, $6, $7, $8); + my $d1 = $d; + $d1 =~ s/^0+//; if ($special eq 'HTML') { push(@{$days->[$d]}, $body); } elsif ($special eq 'HTMLCLASS') { $classes->[$d] = $body; + } elsif ($special eq 'WEEK') { + $body =~ s/^\s+//; + $body =~ s/\s+$//; + $weeks->{$d1} = $body; } elsif ($special eq 'MOON') { if ($body =~ /(\S+)\s+(\S+)\s+(\S+)\s+(.*)$/) { my ($phase, $moonsize, $fontsize, $msg) = ($1, $2, $3, $4); @@ -474,6 +481,10 @@ sub draw_day_cell { my($day) = @_; my $shade = $shades->[$day]; + my $week = ''; + if (exists($weeks->{$day})) { + $week = ' (W' . $weeks->{$day} . ')'; + } my $class; if ($Options{'nostyle'}) { $class = $classes->[$day] || ''; @@ -528,10 +539,10 @@ sub draw_day_cell } if ($Options{'nostyle'}) { - print "
$day
\n"; + print "
$day$week
\n"; print "

 

\n"; } else { - print "
$day
\n"; + print "
$day$week
\n"; } if ($days->[$day]) { print(join("\n", @{$days->[$day]}));