perl: bundled features in older version
[sheet.git] / tools / mkdigraphs-xorg
index 4d25445ba2a9bdeb61203891d7943820e7098e4f..ec88309500c97ddb2c714f6df6cd149baef5c9b5 100755 (executable)
@@ -9,7 +9,7 @@ use JSON 'decode_json';
 use Data::Dump 'pp';
 use Shiar_Sheet::FormatChar;
 
-our $VERSION = '1.01';
+our $VERSION = '1.02';
 
 my $matchvim;  # enable to prefer best compatibility
 
@@ -42,10 +42,15 @@ while ($_ = readline) {
        my ($class, $name, undef, undef, $string) = @{
                Shiar_Sheet::FormatChar->glyph_info($cp)
        };
+       my $reverse = substr($mnem, 1, 1) . substr($mnem, 0, 1);
+       my $cmp = $vidi->{key}->{$mnem};
+       my $cmpalt = defined $cmp && !$cmp && $vidi->{key}->{$reverse};
        my $comparison = (
-               !$vidi->{key}->{$mnem} ? 'l3' :  # free
-               $vidi->{key}->{$mnem}->[0] != $cp ? 'l1' :  # conflict
-               $vidi->{key}->{$mnem}->[2] eq 'l5' ? 'l5' :  # rfc
+               !$cmp ?
+                       $cmpalt && $cmpalt->[0] == $cp ? 'l4' :  # matches alias
+                       'l3' :  # free
+               $cmp->[0] != $cp ? 'l1' :  # conflict
+               $cmp->[2] eq 'l5' ? 'l5' :  # rfc
                'l4'  # any
        );
 
@@ -78,7 +83,7 @@ print JSON->new->canonical->indent->encode({
        title => 'X.Org',
        key   => \%table,
        intro => join("\n",
-               'Character mnemonics following compose key ⎄:',
+               'Character mnemonics following compose key ⎄',
                'in the X Window System (Shift+AltGr by default).',
                'Differences from <a href="/digraphs">RFC-1345</a> are indicated.',
                'Also see <a href="/keyboard/altgr">monograph maps</a>',
@@ -87,7 +92,7 @@ print JSON->new->canonical->indent->encode({
        keywords => [qw( xorg x11 x )],
        flag  => {
                'l5' => "matching RFC-1345",
-               'l4' => "matching Vim extension",
+               'l4' => "matching Vim extension or alternate",
                'l3' => "unique to Xorg",
                'l1' => "conflict",
                ('l0' => "Xorg preference") x !!$matchvim,