floating point value support
[barcat.git] / graph
diff --git a/graph b/graph
index 01f68463e0c8779f8d974b8d0dfe679673da9444..2212926772f75282959dc1284da9d333ecb77c87 100755 (executable)
--- a/graph
+++ b/graph
@@ -19,12 +19,12 @@ $opt{color} //= 1;
 
 my @lines = readline or exit;
 chomp for @lines;
-my @values = map { s/^\h*(-?[0-9]*)// and $1 } @lines;
+my @values = map { s/^\h* ( -? [0-9]* (?:\.[0-9]+)? )//x and $1 } @lines;
 my @order  = sort { $b <=> $a } @values;
 my $maxval = max $order[0], -$order[-1];
-my $lenval = 1 + ($order[-1] < 0) + int log($maxval || 1) / log 10;  # max string length
+my $lenval = max map { length } @order;
 my $len    = 1 + max map { length } @lines;  # left padding
-my $size   = ($opt{width} - $lenval - $len) / $maxval;  # bar multiplication
+my $size   = $maxval && ($opt{width} - $lenval - $len) / $maxval;  # bar multiplication
 
 sub orderpos { ($order[$_[0]] + $order[$_[0] + .5]) / 2 * $size }
 my @barmark;