From 90dc00d53cc4cb03416e6a85bd3dd889196ac6aa Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sun, 6 Nov 2022 15:05:23 +0100 Subject: [PATCH] prefix indicators option without spark --- barcat | 46 +++++++++++-------- t/t0002-usage_-h_|wc_-l.out | 2 +- ...ution_--spark_--indicators=-123456789.out} | 0 ...-spark_binary_--spark_--indicators=XO.out} | 0 ...k_--indicators=-\302\267\342\200\242O.out" | 0 ...spark-oneliner_--spark_--indicators=1.out} | 0 t/t2120-prefixed.in | 1 + t/t2120-prefixed_--indicators=.out | 8 ++++ t/t2122-outcommented.in | 1 + t/t2122-outcommented_--indicators=#.out | 8 ++++ ...indicators=012345_-cs_--maxval=1_-L17.out} | 0 11 files changed, 46 insertions(+), 20 deletions(-) rename t/{t2109-spark_distribution_--spark=-123456789_#TODO.out => t2109-spark_distribution_--spark_--indicators=-123456789.out} (100%) rename t/{t2110-spark_binary_--spark=XO.out => t2110-spark_binary_--spark_--indicators=XO.out} (100%) rename "t/t2111-spark_unicode_--spark=-\302\267\342\200\242O.out" => "t/t2111-spark_unicode_--spark_--indicators=-\302\267\342\200\242O.out" (100%) rename t/{t2115-spark-oneliner_--spark=1.out => t2115-spark-oneliner_--spark_--indicators=1.out} (100%) create mode 120000 t/t2120-prefixed.in create mode 100644 t/t2120-prefixed_--indicators=.out create mode 120000 t/t2122-outcommented.in create mode 100644 t/t2122-outcommented_--indicators=#.out rename t/{t2180-spark_combined_--spark=012345_-cs_--maxval=1_-L17.out => t2180-spark_combined_--spark_--indicators=012345_-cs_--maxval=1_-L17.out} (100%) diff --git a/barcat b/barcat index 077bae0..b65271e 100755 --- a/barcat +++ b/barcat @@ -53,11 +53,8 @@ GetOptions(\%opt, 'graph-format=s' => sub { $opt{'graph-format'} = substr $_[1], 0, 1; }, - 'spark:s' => sub { - $opt{spark} = [split //, - $_[1] || ($opt{ascii} ? ' .oO' : ' ▁▂▃▄▅▆▇█') - ]; - }, + 'spark|_!', + 'indicators:s', 'palette=s' => sub { $opt{palette} = { fire => [qw( 90 31 91 33 93 97 96 )], @@ -109,6 +106,9 @@ $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{indicators} = [split //, + $opt{indicators} || ($opt{ascii} ? ' .oO' : ' ▁▂▃▄▅▆▇█') +] if defined $opt{indicators} or $opt{spark}; $opt{hidemin} = ($opt{hidemin} || 1) - 1; $opt{input} = (@ARGV && $ARGV[0] =~ m/\A[-0-9]/) ? \@ARGV : undef and undef $opt{interval}; @@ -220,7 +220,7 @@ my $len = defined $opt{trim} && $opt{trim} <= 0 ? -$opt{trim} + 1 : max map { length $values[$_] && length $lines[$_] } 0 .. min $#lines, $opt{hidemax} || (); # left padding my $size = defined $opt{width} && $range && - ($opt{width} - $lenval - $len) / $range; # bar multiplication + ($opt{width} - $lenval - $len - !!$opt{indicators}) / $range; # bar multiplication my @barmark; if ($opt{markers} and $size > 0) { @@ -280,17 +280,19 @@ while ($nr <= $limit) { $val == $order[0] ? $opt{palette}->[-1] : # max $val == $order[-1] ? $opt{palette}->[0] : # min $opt{palette}->[ $rel * ($#{$opt{palette}} - 1) + 1 ]; + my $indicator = $opt{indicators} && $opt{indicators}->[ + !$val || !$#{$opt{indicators}} ? 0 : # blank + $#{$opt{indicators}} < 2 ? 1 : + $val >= $order[0] ? -1 : + $rel * ($#{$opt{indicators}} - 1e-14) + 1 + ]; if ($opt{spark}) { say '' if $opt{width} and $nr and $nr % $opt{width} == 0; - print color($color), $opt{spark}->[ - !$val || !$#{$opt{spark}} ? 0 : # blank - $#{$opt{spark}} < 2 ? 1 : - $val >= $order[0] ? -1 : - $rel * ($#{$opt{spark}} - 1e-14) + 1 - ]; + print color($color), $_ for $indicator; next; } + print $indicator if defined $indicator; if (length $val) { $val = $opt{'value-format'} ? $opt{'value-format'}->($val) : @@ -374,7 +376,9 @@ Options: --min=N, --max=N Bars extend from 0 or the minimum value if lower --palette=(PRESET|COLORS) Override colors of parsed numbers - --spark[=CHARS] Replace lines by sparklines + -_, --spark Replace lines by sparklines + --indicators[=CHARS] Prefix a unicode character corresponding to each + value -s, --stat Total statistics after all data -u, --unmodified Do not reformat values, keeping leading whitespace --value-length=SIZE Reserved space for numbers @@ -527,13 +531,17 @@ relative to the size of values. Predefined color schemes are named I and I, or I and I for 256-color variants. -=item --spark[=] +=item -_, --spark Replace lines by I, -single characters corresponding to input values. -Of a specified sequence of unicode characters, -the first one will be used for non-values, -the remainder will be distributed over the range of values. +single characters (configured by C<--indicators>) +corresponding to input values. + +=item --indicators[=] + +Prefix a unicode character corresponding to each value. +The first specified character will be used for non-values, +the remaining sequence will be distributed over the range of values. Unspecified, block fill glyphs U+2581-2588 will be used. =item -s, --stat @@ -656,7 +664,7 @@ Activity graph of the last days (substitute date C<-v-{}d> on BSD): Sparkline graphics of simple input given as inline parameters: - barcat --spark= 3 1 4 1 5 0 9 2 4 + barcat -_ 3 1 4 1 5 0 9 2 4 =head1 AUTHOR diff --git a/t/t0002-usage_-h_|wc_-l.out b/t/t0002-usage_-h_|wc_-l.out index e85087a..bb95160 100644 --- a/t/t0002-usage_-h_|wc_-l.out +++ b/t/t0002-usage_-h_|wc_-l.out @@ -1 +1 @@ -31 +33 diff --git a/t/t2109-spark_distribution_--spark=-123456789_#TODO.out b/t/t2109-spark_distribution_--spark_--indicators=-123456789.out similarity index 100% rename from t/t2109-spark_distribution_--spark=-123456789_#TODO.out rename to t/t2109-spark_distribution_--spark_--indicators=-123456789.out diff --git a/t/t2110-spark_binary_--spark=XO.out b/t/t2110-spark_binary_--spark_--indicators=XO.out similarity index 100% rename from t/t2110-spark_binary_--spark=XO.out rename to t/t2110-spark_binary_--spark_--indicators=XO.out diff --git "a/t/t2111-spark_unicode_--spark=-\302\267\342\200\242O.out" "b/t/t2111-spark_unicode_--spark_--indicators=-\302\267\342\200\242O.out" similarity index 100% rename from "t/t2111-spark_unicode_--spark=-\302\267\342\200\242O.out" rename to "t/t2111-spark_unicode_--spark_--indicators=-\302\267\342\200\242O.out" diff --git a/t/t2115-spark-oneliner_--spark=1.out b/t/t2115-spark-oneliner_--spark_--indicators=1.out similarity index 100% rename from t/t2115-spark-oneliner_--spark=1.out rename to t/t2115-spark-oneliner_--spark_--indicators=1.out diff --git a/t/t2120-prefixed.in b/t/t2120-prefixed.in new file mode 120000 index 0000000..03d0ad6 --- /dev/null +++ b/t/t2120-prefixed.in @@ -0,0 +1 @@ +t1006-unvalued.in \ No newline at end of file diff --git a/t/t2120-prefixed_--indicators=.out b/t/t2120-prefixed_--indicators=.out new file mode 100644 index 0000000..861c5d8 --- /dev/null +++ b/t/t2120-prefixed_--indicators=.out @@ -0,0 +1,8 @@ + nan +▍ -1 negative ------- +▏ -2 negativer +▋ 0 zero -----------=-| +▋ .0 zeroer -----------=-| +▋-00 zeroest -----------=-| + +█1.5 positive -----------=-|----------- diff --git a/t/t2122-outcommented.in b/t/t2122-outcommented.in new file mode 120000 index 0000000..e7e15cd --- /dev/null +++ b/t/t2122-outcommented.in @@ -0,0 +1 @@ +t2120-prefixed.in \ No newline at end of file diff --git a/t/t2122-outcommented_--indicators=#.out b/t/t2122-outcommented_--indicators=#.out new file mode 100644 index 0000000..8126eff --- /dev/null +++ b/t/t2122-outcommented_--indicators=#.out @@ -0,0 +1,8 @@ +#nan +# -1 negative ------- +# -2 negativer +# 0 zero -----------=-| +# .0 zeroer -----------=-| +#-00 zeroest -----------=-| +# +#1.5 positive -----------=-|----------- diff --git a/t/t2180-spark_combined_--spark=012345_-cs_--maxval=1_-L17.out b/t/t2180-spark_combined_--spark_--indicators=012345_-cs_--maxval=1_-L17.out similarity index 100% rename from t/t2180-spark_combined_--spark=012345_-cs_--maxval=1_-L17.out rename to t/t2180-spark_combined_--spark_--indicators=012345_-cs_--maxval=1_-L17.out -- 2.30.0