Holiday support
[tpope-extra.git] / perl / sctweb
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";
        }
     }