App-cat-v
view release on metacpan or search on metacpan
lib/App/cat/v.pm view on Meta::CPAN
package App::cat::v;
our $VERSION = "1.05";
use 5.024;
use warnings;
use open IO => ':utf8', ':std';
use utf8;
use Encode;
use Data::Dumper;
{
no warnings 'redefine';
*Data::Dumper::qquote = sub { qq["${\(shift)}"] };
$Data::Dumper::Useperl = 1;
}
use open IO => 'utf8', ':std';
use charnames ':loose';
use Pod::Usage;
use List::Util qw(max pairmap);
use Hash::Util qw(lock_keys);
use Getopt::EX;
use Text::ANSI::Tabs qw(ansi_expand);
use Term::ANSIColor::Concise qw(ansi_color);
my %control = (
nul => [ 'm', "\x00", { s => "\x{2400}", # â SYMBOL FOR NULL
m => "\x{2205}", } ], # â
EMPTY SET
soh => [ 's', "\x01", { s => "\x{2401}", } ], # â SYMBOL FOR START OF HEADING
stx => [ 's', "\x02", { s => "\x{2402}", } ], # â SYMBOL FOR START OF TEXT
etx => [ 's', "\x03", { s => "\x{2403}", } ], # â SYMBOL FOR END OF TEXT
eot => [ 's', "\x04", { s => "\x{2404}", } ], # â SYMBOL FOR END OF TRANSMISSION
enq => [ 's', "\x05", { s => "\x{2405}", } ], # â
SYMBOL FOR ENQUIRY
ack => [ 's', "\x06", { s => "\x{2406}", } ], # â SYMBOL FOR ACKNOWLEDGE
bel => [ 's', "\x07", { s => "\x{2407}", # â SYMBOL FOR BELL
m => "\x{237E}", } ], # â¾ BELL SYMBOL
bs => [ 's', "\x08", { s => "\x{2408}", } ], # â SYMBOL FOR BACKSPACE
ht => [ 's', "\x09", { s => "\x{2409}", } ], # â SYMBOL FOR HORIZONTAL TABULATION
nl => [ 'm', "\x0a", { s => "\x{240A}", # â SYMBOL FOR LINE FEED
m => "\x{23CE}", } ], # â RETURN SYMBOL
vt => [ 's', "\x0b", { s => "\x{240B}", } ], # â SYMBOL FOR VERTICAL TABULATION
np => [ 'm', "\x0c", { s => "\x{240C}", , # â SYMBOL FOR FORM FEED
m => "\x{2398}", } ], # â NEXT PAGE
cr => [ 's', "\x0d", { s => "\x{240D}", } ], # â SYMBOL FOR CARRIAGE RETURN
so => [ 's', "\x0e", { s => "\x{240E}", } ], # â SYMBOL FOR SHIFT OUT
si => [ 's', "\x0f", { s => "\x{240F}", } ], # â SYMBOL FOR SHIFT IN
dle => [ 's', "\x10", { s => "\x{2410}", } ], # â SYMBOL FOR DATA LINK ESCAPE
dc1 => [ 's', "\x11", { s => "\x{2411}", } ], # â SYMBOL FOR DEVICE CONTROL ONE
dc2 => [ 's', "\x12", { s => "\x{2412}", } ], # â SYMBOL FOR DEVICE CONTROL TWO
dc3 => [ 's', "\x13", { s => "\x{2413}", } ], # â SYMBOL FOR DEVICE CONTROL THREE
dc4 => [ 's', "\x14", { s => "\x{2414}", } ], # â SYMBOL FOR DEVICE CONTROL FOUR
nak => [ 's', "\x15", { s => "\x{2415}", } ], # â SYMBOL FOR NEGATIVE ACKNOWLEDGE
syn => [ 's', "\x16", { s => "\x{2416}", } ], # â SYMBOL FOR SYNCHRONOUS IDLE
etb => [ 's', "\x17", { s => "\x{2417}", } ], # â SYMBOL FOR END OF TRANSMISSION BLOCK
can => [ 's', "\x18", { s => "\x{2418}", } ], # â SYMBOL FOR CANCEL
em => [ 's', "\x19", { s => "\x{2419}", } ], # â SYMBOL FOR END OF MEDIUM
sub => [ 's', "\x1a", { s => "\x{241A}", } ], # â SYMBOL FOR SUBSTITUTE
esc => [ '0', "\x1b", { s => "\x{241B}", # â SYMBOL FOR ESCAPE
m => "\x{21B0}", } ], # â° UPWARDS ARROW WITH TIP LEFTWARDS
fs => [ 's', "\x1c", { s => "\x{241C}", } ], # â SYMBOL FOR FILE SEPARATOR
gs => [ 's', "\x1d", { s => "\x{241D}", } ], # â SYMBOL FOR GROUP SEPARATOR
rs => [ 's', "\x1e", { s => "\x{241E}", } ], # â SYMBOL FOR RECORD SEPARATOR
us => [ 's', "\x1f", { s => "\x{241F}", } ], # â SYMBOL FOR UNIT SEPARATOR
sp => [ 'm', "\x20", { s => "\x{2420}", # â SYMBOL FOR SPACE
m => "\x{00B7}", } ], # · MIDDLE DOT
del => [ 'm', "\x7f", { s => "\x{2421}", , # â¡ SYMBOL FOR DELETE
m => "\x{232B}", } ], # â« ERASE TO THE LEFT
nbsp => [ 's', "\xa0", { s => "\x{237D}", } ], # â½ SHOULDERED OPEN BOX
);
package #
Visibility {
use v5.24;
use warnings;
sub default { $_[0]->[0] }
sub code { $_[0]->[1] }
sub cmap { $_[0]->[2] }
sub visible {
my($c, $type) = @_;
$c->cmap->{$type} // $c->cmap->{$c->default || 's'};
}
};
bless $_, 'Visibility' for values %control;
# setup 'e' map
for my $v (values %control) {
my %map = (
"\t" => '\t',
"\n" => '\n',
"\r" => '\r',
"\f" => '\f',
"\b" => '\b',
( run in 1.324 second using v1.01-cache-2.11-cpan-5837b0d9d2c )