ascii option to avoid unicode
authorMischa POSLAWSKY <perl@shiar.org>
Fri, 19 Mar 2021 02:59:09 +0000 (03:59 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 18 Apr 2022 09:04:29 +0000 (11:04 +0200)
barcat
t/t0002-usage_-h_|wc_-l.out
t/t0003-invalid_options_-Az_?64.out [new file with mode: 0644]
t/t0003-invalid_options_-aZ_?64.out [deleted file]
t/t2105-spark_ascii.in [new symlink]
t/t2105-spark_ascii_-a_--spark.out [new file with mode: 0644]
t/t2201-ascii.in [new file with mode: 0644]
t/t2201-ascii_-aHl7.out [new file with mode: 0644]

diff --git a/barcat b/barcat
index 838c89f95fe14c41a5e95329b669a264db7f4e5b..cc3f607a990787bdb985d9735aeb7a23079c45a3 100755 (executable)
--- a/barcat
+++ b/barcat
@@ -11,6 +11,7 @@ our $VERSION = '1.07';
 use Getopt::Long '2.33', qw( :config gnu_getopt );
 my %opt;
 GetOptions(\%opt,
+       'ascii|a!',
        'color|c!',
        'C' => sub { $opt{color} = 0 },
        'field|f=s' => sub {
@@ -50,7 +51,9 @@ GetOptions(\%opt,
                $opt{'graph-format'} = substr $_[1], 0, 1;
        },
        'spark:s' => sub {
-               $opt{spark} = [split //, $_[1] || ' ▁▂▃▄▅▆▇█'];
+               $opt{spark} = [split //,
+                       $_[1] || ($opt{ascii} ? ' ..oOO' : ' ▁▂▃▄▅▆▇█')
+               ];
        },
        'palette=s' => sub {
                $opt{palette} = {
@@ -119,7 +122,8 @@ $opt{width} ||= $ENV{COLUMNS} || qx(tput cols) || 80 unless $opt{spark};
 $opt{color} //= -t *STDOUT;  # enable on tty
 $opt{'graph-format'} //= '-';
 $opt{trim}   *= $opt{width} / 100 if $opt{trimpct};
-$opt{units}   = [split //, ' kMGTPEZYyzafpnμm'] if $opt{'human-readable'};
+$opt{units}   = [split //, ' kMGTPEZYyzafpn'.($opt{ascii} ? 'u' : 'μ').'m']
+       if $opt{'human-readable'};
 $opt{anchor} //= qr/\A/;
 $opt{'value-length'} = 6 if $opt{units};
 $opt{'value-length'} = 1 if $opt{unmodified};
@@ -179,7 +183,7 @@ while (defined ($_ = $opt{input} ? shift @{ $opt{input} } : readline)) {
                }
                elsif (length > $trimpos) {
                        # cut and replace (intentional lvalue for speed, contrary to PBP)
-                       substr($_, $trimpos - 1) = '…';
+                       substr($_, $trimpos - 1) = $opt{ascii} ? '>' : '…';
                }
        }
        push @lines, $_;
@@ -368,6 +372,12 @@ you'll need a larger animal like I<gnuplot>.
 
 =over
 
+=item -a, --[no-]ascii
+
+Restrict user interface to ASCII characters,
+replacing default UTF-8 by their closest approximation.
+Input is always interpreted as UTF-8 and shown as is.
+
 =item -c, --[no-]color
 
 Force colored output of values and bar markers.
index 64bb6b746dceaf12b0ba8c08f310b0426babde44..e85087affded170efcbc6f9672a6fc671d839ed0 100644 (file)
@@ -1 +1 @@
-30
+31
diff --git a/t/t0003-invalid_options_-Az_?64.out b/t/t0003-invalid_options_-Az_?64.out
new file mode 100644 (file)
index 0000000..e8e36f1
--- /dev/null
@@ -0,0 +1,2 @@
+Unknown option: A
+Unknown option: z
diff --git a/t/t0003-invalid_options_-aZ_?64.out b/t/t0003-invalid_options_-aZ_?64.out
deleted file mode 100644 (file)
index 082a421..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Unknown option: a
-Unknown option: Z
diff --git a/t/t2105-spark_ascii.in b/t/t2105-spark_ascii.in
new file mode 120000 (symlink)
index 0000000..4646f48
--- /dev/null
@@ -0,0 +1 @@
+t2100-sparkwave.in
\ No newline at end of file
diff --git a/t/t2105-spark_ascii_-a_--spark.out b/t/t2105-spark_ascii_-a_--spark.out
new file mode 100644 (file)
index 0000000..eddad81
--- /dev/null
@@ -0,0 +1 @@
+OOOOOOOOOOOOoooooooo.................ooooooooOOOOOOOOOOOOOOOOOooooooooo................oooooooooOOOO
diff --git a/t/t2201-ascii.in b/t/t2201-ascii.in
new file mode 100644 (file)
index 0000000..447b1fd
--- /dev/null
@@ -0,0 +1,5 @@
+123e-6 micro
+.1 long line
+-1
+-2
+-3
diff --git a/t/t2201-ascii_-aHl7.out b/t/t2201-ascii_-aHl7.out
new file mode 100644 (file)
index 0000000..fbae8fc
--- /dev/null
@@ -0,0 +1,5 @@
+123u micro ------------<-=-+--------|
+100m long> ------------<-=-+--------|-
+ -1        ------------<-=-+
+ -2        ---------
+ -3