barcat.git
4 years agohello barcat =^.^= v1.03
Mischa POSLAWSKY [Fri, 6 Sep 2019 22:22:12 +0000 (00:22 +0200)]
hello barcat =^.^=

Everybody loves cats!

4 years agorename program to barcat
Mischa POSLAWSKY [Fri, 6 Sep 2019 22:22:12 +0000 (00:22 +0200)]
rename program to barcat

English word `graph` is too common and indistinct for general distribution,
already conflicting with /usr/bin/graph from plotutils (Debian bug #61319).

4 years agograph length rounded to nearest integer
Mischa POSLAWSKY [Fri, 6 Sep 2019 22:52:43 +0000 (00:52 +0200)]
graph length rounded to nearest integer

Even distribution, and fixes unexpected overflows due to inexact float
representation after size calculation (round decimals being decremented).

4 years agovalue-length option to override $lenval
Mischa POSLAWSKY [Fri, 6 Sep 2019 23:47:10 +0000 (01:47 +0200)]
value-length option to override $lenval

4 years agofield selection by regex anchor
Mischa POSLAWSKY [Fri, 6 Sep 2019 22:58:44 +0000 (00:58 +0200)]
field selection by regex anchor

Backwards-compatible with field numbers as digits should not be number
delimiters, or could be queried like -f'(?:0)'.

4 years agoretain unsubstituted line contents
Mischa POSLAWSKY [Fri, 6 Sep 2019 23:26:20 +0000 (01:26 +0200)]
retain unsubstituted line contents

Fix length recalculation after interval.

4 years agofield (-f) option to select later values
Mischa POSLAWSKY [Fri, 6 Sep 2019 22:28:57 +0000 (00:28 +0200)]
field (-f) option to select later values

4 years agovalue placeholder in contents
Mischa POSLAWSKY [Fri, 6 Sep 2019 22:42:45 +0000 (00:42 +0200)]
value placeholder in contents

Replace original position to support later occurrences.

4 years agoignore length of valueless lines in padding
Mischa POSLAWSKY [Fri, 6 Sep 2019 22:19:08 +0000 (00:19 +0200)]
ignore length of valueless lines in padding

Excluded from graph, so do not pad other contents to align.

4 years agoshorthand -C to disable color
Mischa POSLAWSKY [Fri, 6 Sep 2019 22:18:29 +0000 (00:18 +0200)]
shorthand -C to disable color

There is precedent for capitalisation to negate, along with +c which is not
supported by Getopt::Long.

4 years agorename follow option to --interval or -t
Mischa POSLAWSKY [Fri, 6 Sep 2019 21:33:26 +0000 (23:33 +0200)]
rename follow option to --interval or -t

Initially copied f(ollow) from tail, but that letter will be better suited
for field selection, and the function is only similar.

Alternatives include -s (closer equivalent to tail, also in free --seconds),
-i as in ping --interval (best match, but should be reserved for interactive
or ignore-case), -n like watch --interval, and -v as verbose interpretation.
Settle on -t for best mnemonics; common for time(out) and found in preferred
longhand of inTerval.

4 years agoanother json example with multiple columns
Mischa POSLAWSKY [Fri, 6 Sep 2019 21:27:19 +0000 (23:27 +0200)]
another json example with multiple columns

Also found this API with the same results (and more), but needs separate
queries which is slow and unwanted so unsuitable as a fun snippet:

curl -s https://pokeapi.co/api/v2/pokemon/{1..151} |
jq -r '[.height/10,.id,.name|tostring] | join(" ")' | graph

4 years agoexamples with csv, xml, and json data
Mischa POSLAWSKY [Fri, 6 Sep 2019 21:26:39 +0000 (23:26 +0200)]
examples with csv, xml, and json data

Practical usage with most common file types.

4 years agocalculate length percentages of width v1.02
Mischa POSLAWSKY [Thu, 5 Sep 2019 21:46:21 +0000 (23:46 +0200)]
calculate length percentages of width

Shorthand to facilitate relative sizes without manual preparation.
Allow strings so trailing % can be accepted.

4 years agoenable lexical subs before perl v5.26
Mischa POSLAWSKY [Thu, 5 Sep 2019 20:09:14 +0000 (22:09 +0200)]
enable lexical subs before perl v5.26

Introduced in perl v5.18 and experimental until recently.

4 years agoskip recalculation of unprogressed data
Mischa POSLAWSKY [Thu, 5 Sep 2019 20:08:37 +0000 (22:08 +0200)]
skip recalculation of unprogressed data

4 years agostrip trailing carriage returns
Mischa POSLAWSKY [Thu, 5 Sep 2019 20:08:13 +0000 (22:08 +0200)]
strip trailing carriage returns

Support CRLF line termination regardless of system record separator,
preventing mangled output due to column returns before appended graphs.
Besides Windows files, \r is also added by unbuffer -p for some reason.

4 years agodescribe -u, rename to --unmodified
Mischa POSLAWSKY [Thu, 5 Sep 2019 21:46:57 +0000 (23:46 +0200)]
describe -u, rename to --unmodified

4 years agounclean (-u) option to keep leading whitespace
Mischa POSLAWSKY [Thu, 5 Sep 2019 20:07:49 +0000 (22:07 +0200)]
unclean (-u) option to keep leading whitespace

4 years agoman page rendering of --help pod
Mischa POSLAWSKY [Thu, 5 Sep 2019 16:48:53 +0000 (18:48 +0200)]
man page rendering of --help pod

Emulate git --help including terminal escapes.

4 years agotransition bar to visualise changed scale
Mischa POSLAWSKY [Thu, 5 Sep 2019 16:46:45 +0000 (18:46 +0200)]
transition bar to visualise changed scale

Indicate increased maximum with --follow.

4 years agoignore SIGINT so partial input is shown
Mischa POSLAWSKY [Thu, 5 Sep 2019 16:07:43 +0000 (18:07 +0200)]
ignore SIGINT so partial input is shown

Assume interrupt stops pipes and we can continue.  Subsequent signals will
then be reset so calculation can still be killed.

4 years agocolor default depends on stdout being isatty
Mischa POSLAWSKY [Thu, 5 Sep 2019 16:06:53 +0000 (18:06 +0200)]
color default depends on stdout being isatty

4 years agofollow (-f) option to output partial results
Mischa POSLAWSKY [Thu, 5 Sep 2019 15:07:05 +0000 (17:07 +0200)]
follow (-f) option to output partial results

Calculate and display on every SIGALRM, with scale and statistics upto that
point.  Named like equivalent tail -f.

4 years agoparse values while reading lines
Mischa POSLAWSKY [Thu, 5 Sep 2019 15:05:39 +0000 (17:05 +0200)]
parse values while reading lines

Manipulate input as it comes in, spreading the load and having values ready
for upcoming interrupts without a separate phase to repeat.

4 years agoseparate project repository v1.01
Mischa POSLAWSKY [Thu, 5 Sep 2019 03:16:49 +0000 (05:16 +0200)]
separate project repository

Commits moved out of home and cleaned for public distribution.
Version bump to celebrate.

4 years agoavoid drawing empty graph
Mischa POSLAWSKY [Thu, 5 Sep 2019 02:45:25 +0000 (04:45 +0200)]
avoid drawing empty graph

4 years agomarkers < > at standard deviation offsets
Mischa POSLAWSKY [Thu, 5 Sep 2019 01:54:41 +0000 (03:54 +0200)]
markers < > at standard deviation offsets

4 years agodisable markers without graph
Mischa POSLAWSKY [Wed, 4 Sep 2019 22:50:04 +0000 (00:50 +0200)]
disable markers without graph

Avoid error "Modification of non-creatable array value attempted"
trying to access unallocated positions.

4 years agocut after assumed delimiter on --trim=0
Mischa POSLAWSKY [Wed, 4 Sep 2019 22:20:35 +0000 (00:20 +0200)]
cut after assumed delimiter on --trim=0

4 years agoomit abbreviation mark on --trim=1
Mischa POSLAWSKY [Wed, 4 Sep 2019 21:55:58 +0000 (23:55 +0200)]
omit abbreviation mark on --trim=1

The first character should be whitespace or another delimiter to be kept.
Contents can be assumed cut and does not need an indicator.

4 years agoinclude value delimiter in trim length
Mischa POSLAWSKY [Wed, 4 Sep 2019 21:28:42 +0000 (23:28 +0200)]
include value delimiter in trim length

4 years agotrim maximum unless negative
Mischa POSLAWSKY [Wed, 4 Sep 2019 21:06:06 +0000 (23:06 +0200)]
trim maximum unless negative

4 years agotrim (-l) option to abbreviate contents
Mischa POSLAWSKY [Wed, 4 Sep 2019 20:36:05 +0000 (22:36 +0200)]
trim (-l) option to abbreviate contents

4 years agomarkers (-m) option to omit statistical markers
Mischa POSLAWSKY [Wed, 4 Sep 2019 20:22:01 +0000 (22:22 +0200)]
markers (-m) option to omit statistical markers

Support leaving bars untouched for either aesthetical reasons or to avoid
calculation (which may yet be(come) costly or buggy).

String argument is only checked for emptiness, otherwise all positions are
enabled.  Effectively boolean but with future compatibility for more
detailed customisation.

4 years agonegative values less than positive
Mischa POSLAWSKY [Wed, 4 Sep 2019 18:56:22 +0000 (20:56 +0200)]
negative values less than positive

Extend graph to the lowest value, with axis marked by |.

4 years agopass through numberless lines
Mischa POSLAWSKY [Wed, 4 Sep 2019 18:39:10 +0000 (20:39 +0200)]
pass through numberless lines

Ignore in statistics, and silence perl warnings about arguments not being
numeric.

4 years agofloating point value support
Mischa POSLAWSKY [Wed, 4 Sep 2019 18:29:09 +0000 (20:29 +0200)]
floating point value support

Include numbers after decimal point; perl will handle it no problem.
Replace stupid digit calculation without number reformatting by simple
string length, also fixing log error on 0 values.

4 years agonegative value support
Mischa POSLAWSKY [Wed, 4 Sep 2019 18:24:17 +0000 (20:24 +0200)]
negative value support

Include integers less than zero; treat as positive for bar sizes.

4 years agoassume standard input/output is utf8
Mischa POSLAWSKY [Wed, 4 Sep 2019 18:23:23 +0000 (20:23 +0200)]
assume standard input/output is utf8

Fixes length calculation of unicode data.

4 years agocolor option to disable formatting codes
Mischa POSLAWSKY [Wed, 4 Sep 2019 18:22:23 +0000 (20:22 +0200)]
color option to disable formatting codes

4 years agodocument practical example oneliners
Mischa POSLAWSKY [Wed, 4 Sep 2019 18:21:24 +0000 (20:21 +0200)]
document practical example oneliners

Some shell commands adapted from personal history.  After pictures,
code should also be worth quite some words.

4 years agoshort and long help options
Mischa POSLAWSKY [Thu, 5 Sep 2019 01:02:38 +0000 (03:02 +0200)]
short and long help options

Emulate git commands in having -h for usage distinct from --help for full
documentation.

4 years agominimal documentation and help options v1.00
Mischa POSLAWSKY [Wed, 4 Sep 2019 16:52:19 +0000 (18:52 +0200)]
minimal documentation and help options

4 years agoparse options to override width
Mischa POSLAWSKY [Wed, 4 Sep 2019 16:35:54 +0000 (18:35 +0200)]
parse options to override width

4 years agoindicate average value in bar
Mischa POSLAWSKY [Wed, 4 Sep 2019 14:57:08 +0000 (16:57 +0200)]
indicate average value in bar

4 years agocoloured bar markers
Mischa POSLAWSKY [Wed, 4 Sep 2019 18:22:54 +0000 (20:22 +0200)]
coloured bar markers

4 years agoprepare to facilitate other distribution markers
Mischa POSLAWSKY [Wed, 4 Sep 2019 14:55:32 +0000 (16:55 +0200)]
prepare to facilitate other distribution markers

4 years agoprepare bar positions of (mean) indicators
Mischa POSLAWSKY [Wed, 4 Sep 2019 14:45:49 +0000 (16:45 +0200)]
prepare bar positions of (mean) indicators

4 years agoindicate mean value in bar position
Mischa POSLAWSKY [Wed, 4 Sep 2019 14:22:04 +0000 (16:22 +0200)]
indicate mean value in bar position

Better visual, and accurate in case of split middle.

4 years agodistinguish median value
Mischa POSLAWSKY [Wed, 4 Sep 2019 14:12:13 +0000 (16:12 +0200)]
distinguish median value

Greater number in case of even lines.

4 years agominimum and maximum values in red and green
Mischa POSLAWSKY [Wed, 4 Sep 2019 14:10:29 +0000 (16:10 +0200)]
minimum and maximum values in red and green

4 years agoreformat and colourise numbers
Mischa POSLAWSKY [Wed, 4 Sep 2019 13:59:49 +0000 (15:59 +0200)]
reformat and colourise numbers

Replace captured values in dark grey, with minimal padding
(uniq adds at least 6 spaces we can use for graphing).

4 years agowrite out script, enable warnings
Mischa POSLAWSKY [Wed, 4 Sep 2019 13:16:23 +0000 (15:16 +0200)]
write out script, enable warnings

Mostly the same code but more readable and maintainable.
Integers are captured and bars enlarged to fill screen width.

4 years agodraw bar graph for input values v0.10
Mischa POSLAWSKY [Fri, 23 Mar 2007 15:08:59 +0000 (16:08 +0100)]
draw bar graph for input values

Written as one-liner to visualise output from uniq -c (i.e. git history).