#!/usr/bin/perl my ($PROGNAME,$BASENAME) = ($0,$0); $PROGNAME =~ s|^.*/||; $BASENAME="./$BASENAME" if ($BASENAME !~ /\//); $BASENAME =~ s|/[^\/]+$||; $BASENAME=$BASENAME || "/"; open(IN,"<$BASENAME/todo") || die("Can't read $BASENAME/todo list\n"); my %todo; while() { # priority sched complete requestor description s/#.*//g; next unless /\S/; die("Can't parse line [$. of todo]\n") unless /^([lmhcd][^\t]*)\t+([^\t]+)\t+(\d+)%?\t+(\S+)\t+([^\t].*)$/i; my ($prio,$sched,$comp,$req,$desc) = (lc($1),$2,$3,$4,$5); push(@{$todo{$prio}}, [$sched,$comp,$req,$desc]); } close IN; open(STDOUT,">$BASENAME/index.html") || die("Can't write $BASENAME/index.html\n"); print < Development schedule for MyVite.com
MyVite Inc.

Development Schedule

HEADER foreach my $priority ( qw(DONE High Medium Low Consideration) ) { my $prio = lc(substr($priority,0,1)); my $prio_full = ($prio eq "c") ? "Under $priority" : ($prio eq "d") ? $priority : "Priority: $priority"; print < START_PRIO foreach my $l ( @{$todo{$prio}} ) { my ($sched,$comp,$req,$desc) = @$l; $sched="
X
" if $prio eq "d"; $comp=100 if $prio eq "d"; if ($comp>=0 && $comp<=100) { my $red=2.55*(100-$comp); my $green=2.55*$comp; $comp=sprintf("$comp",$red,$green); } $comp .= "\%"; $comp="" if $prio eq "c"; print < TODO } } print <

Automagically generated by todo_make from source FOOTER close STDOUT;


$prio_full
Schedule  Complete  Requestor  Description 

$sched $comp $req $desc