minval/maxval options to override bar range
authorMischa POSLAWSKY <perl@shiar.org>
Mon, 23 Sep 2019 15:27:06 +0000 (17:27 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 24 Sep 2019 00:08:51 +0000 (02:08 +0200)
barcat
t/t0002-usage_-h_|wc_-l.out

diff --git a/barcat b/barcat
index 48e47d1667206a56bdcff7da6b36fbe0807f4fc5..7038f066634216f992b4c9c8ce3f715108ed13ff 100755 (executable)
--- a/barcat
+++ b/barcat
@@ -33,6 +33,8 @@ GetOptions(\%opt,
        'value-length=i',
        'hidemin=i',
        'hidemax=i',
+       'minval=f',
+       'maxval=f',
        'limit|L=s' => sub {
                my ($optname, $optval) = @_;
                $optval ||= 0;
@@ -153,8 +155,8 @@ state $nr = $opt{hidemin} ? $opt{hidemin} - 1 : 0;
 @lines > $nr or return unless $opt{hidemin};
 
 @order = sort { $b <=> $a } @order unless tied @order;
-my $maxval = ($opt{hidemax} ? max grep { length } @values[0 .. $opt{hidemax} - 1] : $order[0]) // 0;
-my $minval = min $order[-1] // (), 0;
+my $maxval = $opt{maxval} // ($opt{hidemax} ? max grep { length } @values[0 .. $opt{hidemax} - 1] : $order[0]) // 0;
+my $minval = $opt{minval} // min $order[-1] // (), 0;
 my $lenval = $opt{'value-length'} // max map { length } @order;
 my $len    = defined $opt{trim} && $opt{trim} <= 0 ? -$opt{trim} + 1 :
        max map { length $values[$_] && length $lines[$_] }
@@ -177,8 +179,9 @@ if ($opt{markers} and $size > 0) {
                        else {
                                return $func;
                        }
-               };
-               color(36) for $barmark[($pos - $minval) * $size] = $char;
+               } - $minval;
+               $pos >= 0 or next;
+               color(36) for $barmark[$pos * $size] = $char;
        }
 
        state $lastmax = $maxval;
@@ -385,6 +388,12 @@ Indicated by default as I<=>.
 
 =back
 
+=item --min=<number>, --max=<number>
+
+Bars extend from 0 or the minimum value if lower,
+to the largest value encountered.
+These options can be set to customize this range.
+
 =item --palette=<color>...
 
 Override colors of parsed numbers.
index bb95160cb6e07358f54a28a208ae41e69889c97b..8f92bfdd49766b1907d4aec8d3b0f9ed6129d0e6 100644 (file)
@@ -1 +1 @@
-33
+35