X-Git-Url: http://git.shiar.net/barcat.git/blobdiff_plain/48a2e93f039145d144094a5cd0fdae12ae3cb5fa..881658b2821b25123b30489287af1da32e4985f7:/barcat diff --git a/barcat b/barcat index ae9fff1..995f669 100755 --- a/barcat +++ b/barcat @@ -122,6 +122,7 @@ $opt{'value-length'} = 1 if $opt{unmodified}; $opt{'signal-stat'} //= exists $SIG{INFO} ? 'INFO' : 'QUIT'; $opt{markers} //= '=avg >31.73v <68.27v +50v |0'; $opt{palette} //= $opt{color} && [31, 90, 32]; +$opt{hidemin} = ($opt{hidemin} || 1) - 1; $opt{input} = @ARGV && $ARGV[0] =~ m/\A[-0-9]/ ? \@ARGV : undef and undef $opt{interval}; @@ -179,12 +180,21 @@ sub color { $_ = color(@_) . $_ . color(0) if defined; } +sub sival { + my $unit = int(log(abs $_[0] || 1) / log(10) - 3*($_[0] < 1) + 1e-15); + my $float = $_[0] !~ /^0*[-0-9]{1,3}$/; + sprintf('%3.*f%1s', + $float && ($unit % 3) == ($unit < 0), # tenths + $_[0] / 1000 ** int($unit/3), # number + $#{$opt{units}} * 1.5 < abs $unit ? "e$unit" : $opt{units}->[$unit/3] + ); +} + sub show_lines { -state $nr = $opt{hidemin} ? $opt{hidemin} - 1 : 0; -@lines and @lines > $nr or return; +state $nr = $opt{hidemin}; @lines or return; -@lines > $nr or return unless $opt{hidemin}; +@lines > $nr or return; @order = sort { $b <=> $a } @order unless tied @order; my $maxval = $opt{maxval} // ( @@ -234,18 +244,6 @@ if ($opt{markers} and $size > 0) { } } -@lines > $nr or return if $opt{hidemin}; - -sub sival { - my $unit = int(log(abs $_[0] || 1) / log(10) - 3*($_[0] < 1) + 1e-15); - my $float = $_[0] !~ /^0*[-0-9]{1,3}$/; - sprintf('%3.*f%1s', - $float && ($unit % 3) == ($unit < 0), # tenths - $_[0] / 1000 ** int($unit/3), # number - $#{$opt{units}} * 1.5 < abs $unit ? "e$unit" : $opt{units}->[$unit/3] - ); -} - say( color(31), sprintf('%*s', $lenval, $minval), color(90), '-', color(36), '+', @@ -294,9 +292,9 @@ say $opt{palette} ? color(0) : '' if $opt{spark}; sub show_stat { if ($opt{hidemin} or $opt{hidemax}) { - $opt{hidemin} ||= 1; - $opt{hidemax} ||= @lines; - printf '%s of ', sum(grep {length} @values[$opt{hidemin} - 1 .. $opt{hidemax} - 1]) // 0; + printf '%s of ', sum(grep { length } + @values[$opt{hidemin} .. ($opt{hidemax} || @lines) - 1] + ) // 0; } if (@order) { my $total = sum @order; @@ -445,11 +443,16 @@ These options can be set to customize this range. 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. +or alternatively I<1;30> for bright 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>). +Multiple intermediate colors will be distributed +relative to the size of values. + +Predefined color schemes are named I and I, +or I and I for 256-color variants. =item --spark[=]