palette option to customize value colors
authorMischa POSLAWSKY <perl@shiar.org>
Mon, 23 Sep 2019 13:19:04 +0000 (15:19 +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 4f723569c04f91d581cd2dc26e0e69820e7aac38..8bb7bbd2c3b742532aeb50a1f986135a0a8dcc2d 100755 (executable)
--- a/barcat
+++ b/barcat
@@ -50,6 +50,9 @@ GetOptions(\%opt,
        'spark:s' => sub {
                $opt{spark} = [split //, $_[1] || '▁▂▃▄▅▆▇█'];
        },
+       'palette:s' => sub {
+               $opt{palette} = [ split /\s/, $_[1] ];
+       },
        'stat|s!',
        'signal-stat=s',
        'unmodified|u!',
@@ -91,6 +94,7 @@ $opt{anchor} //= qr/\A/;
 $opt{'value-length'} = 6 if $opt{units};
 $opt{'value-length'} = 1 if $opt{unmodified};
 $opt{'signal-stat'} //= exists $SIG{INFO} ? 'INFO' : 'QUIT';
+$opt{palette} //= $opt{color} && [31, 90, 32];
 
 my (@lines, @values, @order);
 
@@ -211,10 +215,10 @@ while ($nr <= $#lines) {
        }
 
        if (length $val) {
-               my $color = !$opt{color} ? undef :
-                       $val == $order[0] ? 32 : # max
-                       $val == $order[-1] ? 31 : # min
-                       90;
+               my $color = !$opt{palette} ? undef :
+                       $val == $order[0] ? $opt{palette}->[-1] : # max
+                       $val == $order[-1] ? $opt{palette}->[0] : # min
+                       $opt{palette}->[1] // $opt{palette}->[0];
                $val = $opt{units} ? sival($val) : sprintf "%*s", $lenval, $val;
                color($color) for $val;
        }
@@ -373,6 +377,16 @@ or 68% of all entries.
 
 =back
 
+=item --palette=<color>...
+
+Override colors of parsed numbers.
+Can be any CSI escape, such as I<90> for default dark grey,
+or alternatively I<1;30> for bold black.
+
+In case of additional colors,
+the last is used for values equal to the maximum, the first for minima.
+If unspecified, these are green and red respectively (I<31 90 32>).
+
 =item --spark[=<glyphs>]
 
 Replace lines by I<sparklines>,
index e85087affded170efcbc6f9672a6fc671d839ed0..f5c89552bd3e62bfce023a230e90d141f7a46b2f 100644 (file)
@@ -1 +1 @@
-31
+32