- $row->[0] =~ s/.*<BR>//g;
- $row->[0] = capitalize($row->[0]);
- $row->[1] =~ s/([MTWRFS])/ $days{$1}/g;
- if($row->[2] =~ /^(\d\d):\d\d-(\d\d):\d\dPM$/) {
- $row->[2] =~ s/^(\d\d)/$1+12/e
- if($1 < $2);
- $row->[2] =~ s/-(\d\d)/"-".($1+12)/e;
- $row->[2] =~ s/PM$//;
- } else { $row->[2] =~ s/AM$//; }
- $row->[3] =~ s/(\d\d)-(\d\d)-(\d\d)/20$3$1$2/g;
- $row->[4] =~ s/ON CAMPUS-//g;
- $row->[4] =~ s/-/ /g;
- print "\n";
- print "X-SC-Subject: ", $row->[0], "\n";
- print "X-SC-Category: School\n";
- print "X-SC-Cond:", $row->[1], "\n"; # Space after colon not needed
- print "X-SC-Time: ", $row->[2], "\n";
- print "X-SC-Duration: ", $row->[3], "\n";
- print "X-SC-Location: ", $row->[4], "\n";
+ $row->[0] =~ s/(.*) ?<[Bb][Rr][^>]*>(.*)/capitalize($2)/eg;
+ $classid=$1;
+ $row->[2] = capitalize($row->[2]);
+ $row->[2] =~ s/([A-Z]r?)$/$1./;
+ $row->[2] =~ s/^([^,]*), ([^,.]*|[^,]{4,})/$2 $1/;
+ ($begin, $end) = split("-", $row->[7]);
+ if($row->[7] =~ /^(\d\d):\d\d-(\d\d):\d\dPM$/) {
+ if($1 < $2 && $2 != 12) {
+ $begin =~ s/^(\d\d)/$1+12/e;
+ }
+ if($2 != 12) {
+ $end =~ s/^(\d\d)/$1+12/e;
+ }
+ $end =~ s/PM$//;
+ } else { $end =~ s/AM$//; }
+ $row->[8] =~ s/(\d\d)-(\d\d)-(\d\d)/20$3$1$2/g;
+ $row->[9] =~ s/(ON|MAIN) CAMPUS\n//ig;
+ $row->[9] =~ s/\n/ /g;
+ my %class = (
+ id => $classid,
+ title => $row->[0],
+ #session => $row->[1],
+ instructor => $row->[2],
+ credits => $row->[3],
+ crn => $row->[4],
+ #gradetype => $row->[5],
+ days => $row->[6],
+ #'time' => $row->[7],
+ begin => $begin,
+ end => $end || undef,
+ duration => $row->[8],
+ location => $row->[9],
+ #message => $row->[10],
+ );
+ my @off = ( map { "$_"; } (off_for_holidays(%class), off_for_exams(%class)));
+ $class{'off'} = [ @off ] if (@off);
+ push @schedule, \%class;
+ }
+ }
+ foreach my $ts ($tf->table_states) {
+ foreach my $row ($ts->rows) {
+ next if ($row->[0] =~ /Total Enrolled Hours/);
+ $row->[1] =~ s/\xa0/ /g;
+ map { s/\xa0//g; $_} @$row;
+ map { s/^\r?\n? *//g; $_} @$row;
+ $row->[0] =~ s/.*launchWebCT\("([^"]*)"[^)]*\).*>\s*//s;
+ $classid=$1;
+ $row->[0] =~ s/(.*)/capitalize($1)/eg;
+ $row->[1] =~ s/^([MTWRFS]*) *([0-9:-]*[AP]M)\s*//;
+ ($days, $times) = ($1, $2);
+ ($begin, $end) = split("-", $times);
+ if($times =~ /^(\d\d):\d\d-(\d\d):\d\dPM$/) {
+ if($1 < $2 && $2 != 12) {
+ $begin =~ s/^(\d\d)/$1+12/e;
+ }
+ if($2 != 12) {
+ $end =~ s/^(\d\d)/$1+12/e;
+ }
+ $end =~ s/PM$//;
+ } else { $end =~ s/AM$//; }
+ $row->[2] =~ s/(.*\S)\s*//;
+ $session = $1;
+ $row->[2] =~ s/(\d\d)-(\d\d)-(\d\d)/20$3$1$2/g;
+ $row->[2] =~ s/ *to */-/g;
+ $row->[3] = capitalize($row->[3]);
+ $row->[3] =~ s/([A-Z]r?)$/$1./;
+ $row->[3] =~ s/^([^,]*), ([^,.]{3}[^,]*)/$2 $1/;
+ my %class = (
+ id => $classid,
+ title => $row->[0],
+ #session => $session,
+ instructor => $row->[3],
+ credits => $row->[4],
+ crn => $row->[5],
+ #gradetype => $row->[6],
+ days => $days,
+ #'time' => $times,
+ begin => $begin,
+ end => $end || undef,
+ duration => $row->[2],
+ location => $row->[1],
+ #message => $row->[7],
+ );
+ my @off = ( map { "$_"; } (off_for_holidays(%class), off_for_exams(%class)));
+ $class{'off'} = [ @off ] if (@off);
+ push @schedule, \%class;