digraphs: mkdigraphlist: inline conversion of character details
[sheet.git] / tools / mkdigraphlist
index 17b26a441810cf4b954074f2e7611bacfeb77713..8a05fa42f3740066125fdf42204056e39d248b95 100755 (executable)
@@ -5,7 +5,6 @@ use warnings;
 use utf8;
 
 use open OUT => ':utf8', ':std';
-use Data::Dumper;
 
 our $VERSION = '1.03';
 
@@ -24,13 +23,6 @@ $di = { %{$vim // {}}, %{$di}, %{$extra // {}} };
 my $uninfo = do 'unicode-char.inc.pl'
        or warn "could not include unicode details: ", $@ // $!;
 
-# convert info hashes into arrays of strings to output in display order
-for my $row (values %{$uninfo}) {
-       my ($class, $name, $di, $html, $string) = @{$row};
-       $row = [$name, $class];
-       push @{$row}, '', $string if defined $string;
-}
-
 # output perl code of hash
 # (assume no backslashes or curlies, so we can just q{} w/o escaping)
 print "# automatically generated by $0\n";
@@ -42,7 +34,10 @@ printf '(map {$_=>0} qw{%s}),'."\n", join(' ',
 );
 printf "q{%s}=>[%s],\n", $_, join(',',
        $di->{$_},   # original code point
-       (map {"'$_'"} @{ $uninfo->{ chr $di->{$_} } // [] }),  # optional additional arguments
+       map {"'$_'"}
+       $uninfo->{ chr $di->{$_} }->[1],  # name
+       $uninfo->{ chr $di->{$_} }->[0],  # class
+       (map {('', $_)} $uninfo->{ chr $di->{$_} }->[4] // ()),  # string
 ) for sort keys %{$di};
 print "}\n";
 
@@ -59,11 +54,8 @@ mkdigraphlist - Output character list of combined digraph data
 
 =head1 DESCRIPTION
 
-Parses the official RFC-1345 document, searching the
-'character mnemonic table' for all digraph definitions.
-If successful, Perl code is output resulting in a hash
-with character data keyed by digraph.
-Any errors and warnings are given at STDERR.
+Combines precompiled digraph includes of rfc (1345), vim, and shiar
+and outputs a complete map including character details and usage classes.
 
 The value can either be a scalar string containing another
 digraph which can be considered identical (usually inverted),