X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/82c2fbd0e3157016f580c0ef823996ed26d8bb26..2f04e70f572e53dc9e824a77510c197ff0a240a2:/rfc1345convert diff --git a/rfc1345convert b/rfc1345convert index f6f0ab8..4fd3940 100755 --- a/rfc1345convert +++ b/rfc1345convert @@ -2,7 +2,9 @@ use strict; use warnings; +use utf8; +use open OUT => ':utf8', ':std'; use Data::Dumper; our $VERSION = '1.01'; @@ -108,7 +110,7 @@ my @extra; if (-r 'shiar.inc.txt') { open my $include, '<:utf8', 'shiar.inc.txt'; for (readline $include) { - m{^([!"%'-Z_a-z]{2}) (.)} or next; + m{^(\$?[!"%'-Z_a-z]{2}) (.)} or next; warn("$1 already defined"), next if defined $di{$1}; $di{$1} = ord $2; push @extra, $1; @@ -116,6 +118,9 @@ if (-r 'shiar.inc.txt') { } warn $@ if $@; +$di{chr $_} = $_ for 32 .. 126; +$di{'\\'.$_} = delete $di{$_} for '{', '}', '\\'; + # optionally get unicode character information my %info = eval { require Unicode::UCD; @@ -145,6 +150,10 @@ for (keys %di) { # show descriptive symbols instead of control chars themselves $info{$_}->{string} = $di{$_} < 32 ? chr($di{$_} + 0x2400) : chr(0xFFFD); } +# presentational string for some control(lish) entries +$info{$_}->{string} = '-' for grep { $di{$_} == 0x00AD } keys %di; +$info{$_}->{string} = '→' for grep { $di{$_} == 0x200E } keys %di; +$info{$_}->{string} = '←' for grep { $di{$_} == 0x200F } keys %di; # convert info hashes into arrays of strings to output in display order for my $row (values %info) {