git.shiar.nl
/
barcat.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
palette option to customize value colors
[barcat.git]
/
barcat
diff --git
a/barcat
b/barcat
index 1bcda801779e9a4028b07f5005b5217b5d5120e8..8bb7bbd2c3b742532aeb50a1f986135a0a8dcc2d 100755
(executable)
--- a/
barcat
+++ b/
barcat
@@
-6,7
+6,7
@@
use List::Util qw( min max sum );
use open qw( :std :utf8 );
use experimental qw( lexical_subs );
use open qw( :std :utf8 );
use experimental qw( lexical_subs );
-our $VERSION = '1.0
5
';
+our $VERSION = '1.0
6
';
use Getopt::Long '2.33', qw( :config gnu_getopt );
my %opt;
use Getopt::Long '2.33', qw( :config gnu_getopt );
my %opt;
@@
-42,6
+42,7
@@
GetOptions(\%opt,
" (range expected)\n"
);
},
" (range expected)\n"
);
},
+ 'header!',
'markers|m=s',
'graph-format=s' => sub {
$opt{'graph-format'} = substr $_[1], 0, 1;
'markers|m=s',
'graph-format=s' => sub {
$opt{'graph-format'} = substr $_[1], 0, 1;
@@
-49,10
+50,17
@@
GetOptions(\%opt,
'spark:s' => sub {
$opt{spark} = [split //, $_[1] || '▁▂▃▄▅▆▇█'];
},
'spark:s' => sub {
$opt{spark} = [split //, $_[1] || '▁▂▃▄▅▆▇█'];
},
+ 'palette:s' => sub {
+ $opt{palette} = [ split /\s/, $_[1] ];
+ },
'stat|s!',
'signal-stat=s',
'unmodified|u!',
'width|w=i',
'stat|s!',
'signal-stat=s',
'unmodified|u!',
'width|w=i',
+ 'version' => sub {
+ say "barcat version $VERSION";
+ exit;
+ },
'usage|h' => sub {
local $/;
my $pod = readline *DATA;
'usage|h' => sub {
local $/;
my $pod = readline *DATA;
@@
-86,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{'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);
my (@lines, @values, @order);
@@
-188,6
+197,14
@@
sub sival {
);
}
);
}
+say(
+ color(31), sprintf('%*s', $lenval, $minval),
+ color(90), '-', color(36), '+',
+ color(32), sprintf('%*s', $size * ($maxval - $minval) - 3, $maxval),
+ color(90), '-', color(36), '+',
+ color(0),
+) if $opt{header};
+
while ($nr <= $#lines) {
$nr >= $opt{hidemax} and last if defined $opt{hidemax};
my $val = $values[$nr];
while ($nr <= $#lines) {
$nr >= $opt{hidemax} and last if defined $opt{hidemax};
my $val = $values[$nr];
@@
-198,10
+215,10
@@
while ($nr <= $#lines) {
}
if (length $val) {
}
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;
}
$val = $opt{units} ? sival($val) : sprintf "%*s", $lenval, $val;
color($color) for $val;
}
@@
-290,6
+307,10
@@
A string can indicate the starting position of a value
or capture the numbers itself,
for example I<-f'(\d+)'> for the first digits anywhere.
or capture the numbers itself,
for example I<-f'(\d+)'> for the first digits anywhere.
+=item --header
+
+Prepend a chart axis with minimum and maximum values labeled.
+
=item -H, --human-readable
Format values using SI unit prefixes,
=item -H, --human-readable
Format values using SI unit prefixes,
@@
-356,6
+377,16
@@
or 68% of all entries.
=back
=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>,
=item --spark[=<glyphs>]
Replace lines by I<sparklines>,