git.shiar.nl
/
barcat.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
named palette presets fire, whites
[barcat.git]
/
barcat
diff --git
a/barcat
b/barcat
index 48e47d1667206a56bdcff7da6b36fbe0807f4fc5..ad6ccab98ffdaf7ad0eaab230979ff1fbbecff05 100755
(executable)
--- a/
barcat
+++ b/
barcat
@@
-33,6
+33,8
@@
GetOptions(\%opt,
'value-length=i',
'hidemin=i',
'hidemax=i',
'value-length=i',
'hidemin=i',
'hidemax=i',
+ 'minval=f',
+ 'maxval=f',
'limit|L=s' => sub {
my ($optname, $optval) = @_;
$optval ||= 0;
'limit|L=s' => sub {
my ($optname, $optval) = @_;
$optval ||= 0;
@@
-50,8
+52,11
@@
GetOptions(\%opt,
'spark:s' => sub {
$opt{spark} = [split //, $_[1] || '▁▂▃▄▅▆▇█'];
},
'spark:s' => sub {
$opt{spark} = [split //, $_[1] || '▁▂▃▄▅▆▇█'];
},
- 'palette:s' => sub {
- $opt{palette} = [ split /\s/, $_[1] ];
+ 'palette=s' => sub {
+ $opt{palette} = {
+ fire => [qw( 90 31 91 33 93 97 96 )],
+ whites => [qw( 1;30 0;37 1;37 )],
+ }->{$_[1]} // [ split /\s/, $_[1] ];
},
'stat|s!',
'signal-stat=s',
},
'stat|s!',
'signal-stat=s',
@@
-153,8
+158,8
@@
state $nr = $opt{hidemin} ? $opt{hidemin} - 1 : 0;
@lines > $nr or return unless $opt{hidemin};
@order = sort { $b <=> $a } @order unless tied @order;
@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[$_] }
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
+182,9
@@
if ($opt{markers} and $size > 0) {
else {
return $func;
}
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;
}
state $lastmax = $maxval;
@@
-218,9
+224,11
@@
say(
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];
+ my $rel = length $val && ($val - $minval) / ($maxval - $minval);
if ($opt{spark}) {
if ($opt{spark}) {
- print $opt{spark}->[ ($val - $minval) / $maxval * $#{$opt{spark}} ];
+ print color($opt{palette}->[ $rel * $#{$opt{palette}} ]) if $opt{palette};
+ print $opt{spark}->[ $rel * $#{$opt{spark}} ];
next;
}
next;
}
@@
-228,7
+236,7
@@
while ($nr <= $#lines) {
my $color = !$opt{palette} ? undef :
$val == $order[0] ? $opt{palette}->[-1] : # max
$val == $order[-1] ? $opt{palette}->[0] : # min
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
];
+ $opt{palette}->[
$rel * ($#{$opt{palette}} - 1) + 1
];
$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;
}
@@
-240,7
+248,7
@@
while ($nr <= $#lines) {
continue {
$nr++;
}
continue {
$nr++;
}
-say '' if $opt{spark};
+say
$opt{palette} ? color(0) :
'' if $opt{spark};
}
}
@@
-385,7
+393,13
@@
Indicated by default as I<=>.
=back
=back
-=item --palette=<color>...
+=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=(<preset> | <color>...)
Override colors of parsed numbers.
Can be any CSI escape, such as I<90> for default dark grey,
Override colors of parsed numbers.
Can be any CSI escape, such as I<90> for default dark grey,