From 5eb9d2be28e568af0e1a12391f3c6e5e456de235 Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Thu, 26 Aug 2004 20:14:05 +0000 Subject: [PATCH] Holiday support --- bin/away-detect | 2 +- perl/sctweb | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/bin/away-detect b/bin/away-detect index 118bbff..a3836e8 100755 --- a/bin/away-detect +++ b/bin/away-detect @@ -80,7 +80,7 @@ while read times event; do if [ "$begin" -le "$now" -a "$now" -lt "$end" ]; then echo "scheduled=\"Class ($event)\"" > "$HOME/.away-smart" break - elif [ "$old_away" = "$event" -a "$now" -gt "$max_end" ]; then + elif [ "$old_away" = "Class ($event)" -a "$now" -gt "$max_end" ]; then echo "old_smart=\"$old_away\"" > "$HOME/.away-smart" fi done diff --git a/perl/sctweb b/perl/sctweb index df51173..5925b97 100755 --- a/perl/sctweb +++ b/perl/sctweb @@ -44,6 +44,20 @@ sub generate_id { return $id; } +sub off_for_holidays { + $_[3] =~ /(\d\d\d\d)(\d\d)(\d\d)-(\d\d\d\d)(\d\d)(\d\d)/; + my $days = (timegm(0,0,0,$6,$5-1,$4) - timegm(0,0,0,$3,$2-1,$1))/3600/24; + my @firstday = localtime timelocal(0,0,0,$3,$2-1,$1); + my $firstday = sprintf("%04d%02d%02d",($firstday[5]+1900),($firstday[4]+1),$firstday[3]); + open(HOLIDAY, "today --category=holiday --date=$firstday+$days|") or return undef; + my @holidays=(); + while() { + /^(\d\d)\/(\d\d) /; + push @holidays, "!".($firstday[5]+1900).$1.$2; + } + return wantarray ? @holidays : "@holidays"; +} + sub off_for_exams { $_[3] =~ /\d{8}-(\d\d\d\d)(\d\d)(\d\d)/; my @finalday = localtime timelocal(0,0,0,$3,$2-1,$1); @@ -143,6 +157,11 @@ sub do_mhc_schedule { $row->[4] =~ s/ON CAMPUS-//g; $row->[4] =~ s/-/ /g; my $day = off_for_exams(@$row); + if(defined($day)) { + $day .= " ".off_for_holidays(@$row); + } else { + $day = off_for_holidays(@$row); + } print "\n"; print "# $id\n"; print "X-SC-Subject: ", $row->[0], "\n"; @@ -150,7 +169,7 @@ sub do_mhc_schedule { print "X-SC-Cond: ", $row->[1], "\n"; print "X-SC-Time: ", $row->[2], "\n"; print "X-SC-Duration: ", $row->[3], "\n"; - print("X-SC-Day: ", $day, "\n") if(defined($day)); + print("X-SC-Day: ", $day, "\n") if(defined($day) && $day); print "X-SC-Location: ", $row->[4], "\n"; } } -- 2.30.2