X-Git-Url: http://git.shiar.net/barcat.git/blobdiff_plain/61a444b020fe921791fff78c3acc3f39b5495f5a..881658b2821b25123b30489287af1da32e4985f7:/barcat diff --git a/barcat b/barcat index 7289039..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; @@ -450,6 +448,11 @@ 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[=]