floating point value support
authorMischa POSLAWSKY <perl@shiar.org>
Wed, 4 Sep 2019 18:29:09 +0000 (20:29 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Thu, 5 Sep 2019 03:11:33 +0000 (05:11 +0200)
Include numbers after decimal point; perl will handle it no problem.
Replace stupid digit calculation without number reformatting by simple
string length, also fixing log error on 0 values.

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;