=================================================================== RCS file: /home/cvsroot/twiki/lib/TWiki/Plugins/SpreadSheetPlugin.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- /tmp/T0eraWGZ Fri Mar 7 13:34:44 2003 +++ /tmp/T1fraWGZ Fri Mar 7 13:34:44 2003 @@ -227,6 +227,15 @@ $result += $i if defined $i; } + } elsif( $theFunc eq "DURATION" ) { + $result = 0; + my @arr = getTableRangeAsDays( $theAttr ); + foreach $i ( @arr ) { + $result += $i if defined $i; + } + my ($weeks) = $result / 5; + $result = $result." days"." (".$weeks."Weeks)"; + } elsif( $theFunc eq "AVERAGE" ) { $result = 0; my $items = 0; @@ -300,6 +309,32 @@ # search first float pattern if( $val =~ /^\s*([\-\+]*[0-9\.]+).*/o ) { $arr[$i] = $1; # untainted variable, possibly undef + } else { + $arr[$i] = undef; + } + } + return @arr; +} + +# ====SVEN===================== +sub getTableRangeAsDays +{ + my( $theAttr ) = @_; + + my $val = 0; + my @arr = getTableRange( $theAttr ); + (my $baz = "foo") =~ s/foo//; # reset search vars. defensive coding + for my $i (0 .. $#arr ) { + $val = $arr[$i] || ""; + # search first float pattern + if( $val =~ /^\s*([\-\+]*[0-9\.]+)$/o ) { + $arr[$i] = $1; # untainted variable, possibly undef + } elsif ( $val =~ /^\s*([\-\+]*[0-9\.]+)\s*d/o ) { + $arr[$i] = $1; # untainted variable, possibly undef + } elsif ( $val =~ /^\s*([\-\+]*[0-9\.]+)\s*w/o ) { + $arr[$i] = 5 * $1; # untainted variable, possibly undef + } elsif ( $val =~ /^\s*([\-\+]*[0-9\.]+)\s*h/o ) { + $arr[$i] = $1 / 8; # untainted variable, possibly undef } else { $arr[$i] = undef; }