Holiday support
authorTim Pope <code@tpope.net>
Thu, 26 Aug 2004 20:14:05 +0000 (20:14 +0000)
committerTim Pope <code@tpope.net>
Thu, 26 Aug 2004 20:14:05 +0000 (20:14 +0000)
bin/away-detect
perl/sctweb

index 118bbff597a7a097e67098fb5544e95c3b4ae9d0..a3836e8d00a12ddc7b719d472c9722ac9ca1dabf 100755 (executable)
@@ -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
index df51173d19423311aa38f32bc9e50ce8ab5fcb85..5925b9795f95fca5aa5976b7ecda171494bc220c 100755 (executable)
@@ -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(<HOLIDAY>) {
+       /^(\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";
        }
     }