git.shiar.nl
/
barcat.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ending line count in limit range (prefix +)
[barcat.git]
/
barcat
diff --git
a/barcat
b/barcat
index 1ffdeda9097523dfcbc6fa9e224899df7e84c6b9..faabb3feebee4875ccb6e38eaccdb604e054aeec 100755
(executable)
--- a/
barcat
+++ b/
barcat
@@
-48,11
+48,13
@@
GetOptions(\%opt,
my ($optname, $optval) = @_;
$optval ||= 0;
$optval =~ /\A-[0-9]+\z/ and $optval .= '-'; # tail shorthand
my ($optname, $optval) = @_;
$optval ||= 0;
$optval =~ /\A-[0-9]+\z/ and $optval .= '-'; # tail shorthand
+ $optval =~ s/[+]/--/;
($opt{hidemin}, $opt{hidemax}) =
($opt{hidemin}, $opt{hidemax}) =
- $optval =~ m/\A (?: (-? [0-9]+)? - )? ([0-9]+)? \z/ or die(
+ $optval =~ m/\A (?: (-? [0-9]+)? - )? (
-?
[0-9]+)? \z/ or die(
"Value \"$optval\" invalid for option limit",
" (range expected)\n"
);
"Value \"$optval\" invalid for option limit",
" (range expected)\n"
);
+ s/\A-0*\z// and $_ ||= undef for $opt{hidemax} // ();
},
'log|e!',
'header!',
},
'log|e!',
'header!',
@@
-221,7
+223,10
@@
state $nr =
my $limit = $#lines;
if (defined $opt{hidemax}) {
my $limit = $#lines;
if (defined $opt{hidemax}) {
- if ($opt{hidemin} and $opt{hidemin} < 0) {
+ if ($opt{hidemax} < 0) {
+ $limit = $nr - $opt{hidemax} - 1;
+ }
+ elsif ($opt{hidemin} and $opt{hidemin} < 0) {
$limit -= $opt{hidemax} - 1;
}
elsif ($opt{hidemax} <= $limit) {
$limit -= $opt{hidemax} - 1;
}
elsif ($opt{hidemax} <= $limit) {
@@
-239,8
+244,8
@@
my $range = $maxval - $minval;
$range &&= log $range if $opt{log};
my $lenval = $opt{'value-length'} // max map { length } @order;
my $len = defined $opt{trim} && $opt{trim} <= 0 ? -$opt{trim} + 1 :
$range &&= log $range if $opt{log};
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[$_] }
-
0 .. min $#lines, $opt{hidemax} || ()
; # left padding
+ max
(map { length $values[$_] && length $lines[$_] } $nr .. $limit)
+
// 0
; # left padding
my $size = defined $opt{width} && $range &&
($opt{width} - $lenval - $len - !!$opt{indicators}); # bar multiplication
my $size = defined $opt{width} && $range &&
($opt{width} - $lenval - $len - !!$opt{indicators}); # bar multiplication
@@
-263,10
+268,10
@@
if ($opt{markers} and $size > 0) {
return $func;
}
elsif ($func =~ /\A\/($float)\z/) {
return $func;
}
elsif ($func =~ /\A\/($float)\z/) {
- my @range = $1;
- #TODO log
- for (my $next = $1; $next < $maxval; $next += $range[0]) {
- push @range, $next;
+ my @range =
my $multiple = my $next =
$1;
+ while ($next < $maxval) {
+ $multiple *= 10 if $opt{log};
+ push @range, $next
+= $multiple
;
}
return @range;
}
}
return @range;
}
@@
-440,8
+445,8
@@
Options:
Output partial progress every given number of
seconds or input lines
-l, --length=[-]SIZE[%] Trim line contents (between number and bars)
Output partial progress every given number of
seconds or input lines
-l, --length=[-]SIZE[%] Trim line contents (between number and bars)
- -L, --limit
[=(N|-LAST|START-[END]
)]
- S
top output after a number of lines
+ -L, --limit
=[N|[-]START(-[END]|+N
)]
+ S
elect a range of lines to display
-e, --log Logarithmic (exponential) scale instead of linear
--graph-format=CHAR Glyph to repeat for the graph line
-m, --markers=FORMAT Statistical positions to indicate on bars
-e, --log Logarithmic (exponential) scale instead of linear
--graph-format=CHAR Glyph to repeat for the graph line
-m, --markers=FORMAT Statistical positions to indicate on bars
@@
-543,14
+548,16
@@
unless C<--length=0>.
Prepend a dash (i.e. make negative) to enforce padding
regardless of encountered contents.
Prepend a dash (i.e. make negative) to enforce padding
regardless of encountered contents.
-=item -L, --limit
[=(<count> | -<last> | <start>-[<end>]
)]
+=item -L, --limit
=[<count> | [-]<start>(-[<end>] | +<count>
)]
-S
top output after a number of lines
.
-A single
value
indicates the last line number (like C<head>),
+S
elect a range of lines to display
.
+A single
integer
indicates the last line number (like C<head>),
or first line counting from the bottom if negative (like C<tail>).
or first line counting from the bottom if negative (like C<tail>).
-A specific range can be given by two values.
-All input is still counted and analyzed for statistics,
+A range consists of a starting line number followed by either
+a dash C<-> to an optional end, or plus sign C<+> with count.
+
+All hidden input is still counted and analyzed for statistics,
but disregarded for padding and bar size.
=item -e, --log
but disregarded for padding and bar size.
=item -e, --log