From 61b25c1967cc0ebd45e88802fcfb8c4f81363981 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Wed, 21 Feb 2024 20:52:19 +0100 Subject: [PATCH] digraphs: include flag legend in include data --- digraphs.plp | 31 ++++++++++++++++--------------- tools/mkdigraphlist | 22 +++++++++++++++++----- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/digraphs.plp b/digraphs.plp index ccb1987..4ee4d1f 100644 --- a/digraphs.plp +++ b/digraphs.plp @@ -42,9 +42,9 @@ my $di = Data('digraphs'); if (exists $get{v}) { # show characters for inverted mnemonics (vim alternatives) - $di->{ substr($_, 1, 1) . substr($_, 0, 1) } ||= - [ $di->{$_}->[0], '', 'l0 ex', '', $di->{$_}->[4] ] - for grep { ref $di->{$_} } keys %{$di}; + $di->{key}->{ substr($_, 1, 1) . substr($_, 0, 1) } ||= [ + $di->{key}->{$_}->[0], '', 'l0 ex', '', $di->{key}->{$_}->[4] + ] for grep { ref $di->{key}->{$_} } keys %{ $di->{key} }; } my @chars = ( @@ -61,8 +61,10 @@ if ($mode) { my $xorg = Data('data/digraphs-xorg'); $_ = [ord $_] for values %{$xorg}; $xorg->{$_}->[2] = # class = compatibility - $di->{$_} ? $di->{$_}->[0] != $xorg->{$_}->[0] ? 'l1' : # conflict - $di->{$_}->[2] eq 'l4' ? 'l5' : 'l3' : 'l2' # rfc|any|none + !$di->{key}->{$_} ? 'l2' : # free + $di->{key}->{$_}->[0] != $xorg->{$_}->[0] ? 'l1' : # conflict + $di->{key}->{$_}->[2] eq 'l4' ? 'l5' : # rfc + 'l3' # any for keys %{$xorg}; for my $cp (map {$_->[0]} values %{$xorg}) { @@ -85,7 +87,7 @@ if ($mode) { $chars2[0] = [qw( # ^ _ ` ~ )]; @chars = @chars2; - $di = $xorg; + $di->{key} = $xorg; } for my $colchars (@columns) { @@ -103,15 +105,16 @@ for my $c1group (@chars) { print '', EscapeHTML($c1); for my $c2 (map {@$_} @$colchars) { my $mnem = $c1 . $c2; - if (not defined $di->{$mnem}) { + if (not defined $di->{key}->{$mnem}) { print ''; next; } - if (ref $di->{$mnem} ne 'ARRAY') { + if (ref $di->{key}->{$mnem} ne 'ARRAY') { printf '', EscapeHTML($mnem); next; } - my ($codepoint, $name, $support, $script, $string) = @{ $di->{$mnem} }; + my ($codepoint, $name, $support, $script, $string) = + @{ $di->{key}->{$mnem} }; my $glyph = $string || chr $codepoint; utf8::upgrade($glyph); # prevent latin1 output @@ -166,12 +169,10 @@ if ($mode) { chinese - -
full support - vim extension - vim v8.0 - proposal - not in vim + <: + print qq(\n\t
$di->{flag}->{$_}) + for sort keys %{ $di->{flag} }; +:>
diff --git a/tools/mkdigraphlist b/tools/mkdigraphlist index 5356987..075d564 100755 --- a/tools/mkdigraphlist +++ b/tools/mkdigraphlist @@ -43,7 +43,17 @@ $table{$_} = [ ($uninfo->{ $di->{$_} }->[0] // '') =~ s/ u-di| u-prop| ex//gr, # class $uninfo->{ $di->{$_} }->[4] // (), # string ] for sort keys %{$di}; -print JSON->new->ascii->canonical->encode(\%table); + +print JSON->new->ascii->canonical->encode({ + key => \%table, + flag => { + l4 => 'full support', + l3 => 'vim extension', + 'l3 ex' => 'vim v8.0', + l2 => 'proposal', + l1 => 'not in vim', + }, +}); __END__ @@ -53,14 +63,14 @@ mkdigraphlist - Output character list of combined digraph data =head1 SYNOPSIS - mkdigraphlist | jq -r '."DO"[0]' | perl -nE 'say chr' # $ + mkdigraphlist | jq -r '.key."DO"[0]' | perl -nE 'say chr' # $ =head1 DESCRIPTION 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 +The C values can either be a scalar string containing another digraph which can be considered identical (usually inverted), or an array ref containing at least the resulting character's Unicode code point value. If available, the following UCD data @@ -69,8 +79,10 @@ and replacement output string. For example: { - "AE" => [198, "LATIN CAPITAL LETTER AE", "u-di", "Latin Lu Xl u-v11"], - "EA" => "AE", + "key": { + "AE" => [198, "LATIN CAPITAL LETTER AE", "u-di", "Latin Lu Xl u-v11"], + "EA" => "AE", + } } =head1 AUTHOR -- 2.30.0