From 71f5871eee199636350587c8be9596ccb8689d6f Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sun, 22 Feb 2015 02:41:57 +0100 Subject: [PATCH] digraphs: prepare target characters as strings Allows custom representation consisting of multiple characters. --- tools/mkcharinfo | 6 ++-- tools/mkdigraphlist | 10 +++--- tools/mkdigraphs-rfc | 78 ++++++++++++++++++++++-------------------- tools/mkdigraphs-shiar | 6 ++-- tools/mkdigraphs-vim | 5 +-- 5 files changed, 54 insertions(+), 51 deletions(-) diff --git a/tools/mkcharinfo b/tools/mkcharinfo index dfcd13d..66f3a00 100755 --- a/tools/mkcharinfo +++ b/tools/mkcharinfo @@ -8,7 +8,7 @@ no if $] >= 5.018, warnings => 'experimental::smartmatch'; use open OUT => ':utf8', ':std'; use Data::Dump 'pp'; -our $VERSION = '1.00'; +our $VERSION = '1.01'; my %info = ( # prepare presentational string for some control(lish) entries @@ -58,8 +58,8 @@ for (sort keys %diinc) { my $cp = $di->{$mnem}; length $mnem == 2 or next; # limit to digraphs my $class = $diinc{$_}; - $info{chr $cp}->{di} //= $mnem; - $info{chr $cp}->{class}->{$class}++; + $info{$cp}->{di} //= $mnem; + $info{$cp}->{class}->{$class}++; } } diff --git a/tools/mkdigraphlist b/tools/mkdigraphlist index e472ce0..2e6c919 100755 --- a/tools/mkdigraphlist +++ b/tools/mkdigraphlist @@ -6,7 +6,7 @@ use utf8; use open OUT => ':utf8', ':std'; -our $VERSION = '1.04'; +our $VERSION = '1.05'; # import and combine various digraph data my $rfc = do 'data/digraphs-rfc.inc.pl' @@ -31,14 +31,14 @@ printf '(map {$_=>0} qw{%s}),'."\n", join(' ', map { substr($_, 1, 1).substr($_, 0, 1) } sort keys %{$di} ); printf "q{%s}=>[%s],\n", $_, join(',', - $di->{$_}, # original code point + ord $di->{$_}, # original code point map {"'$_'"} - $uninfo->{ chr $di->{$_} }->[1], # name + $uninfo->{ $di->{$_} }->[1], # name $vim->{$_} ? $rfc->{$_} ? 'u-di' : 'u-prop' # vim+rfc or vim-only : 'u-prop ex', # neither - $uninfo->{ chr $di->{$_} }->[0] =~ s/ u-di| u-prop| ex//gr, # class - $uninfo->{ chr $di->{$_} }->[4] // (), # string + $uninfo->{ $di->{$_} }->[0] =~ s/ u-di| u-prop| ex//gr, # class + $uninfo->{ $di->{$_} }->[4] // (), # string ) for sort keys %{$di}; print "}\n"; diff --git a/tools/mkdigraphs-rfc b/tools/mkdigraphs-rfc index 007e7b0..81df0a0 100755 --- a/tools/mkdigraphs-rfc +++ b/tools/mkdigraphs-rfc @@ -4,49 +4,50 @@ use strict; use warnings; use utf8; use open OUT => ':utf8', ':std'; +use Data::Dump 'pp'; -our $VERSION = '1.00'; +our $VERSION = '1.01'; # translation table for deprecated code points my %replace = ( 0xE001 => 0, # join lines: not accepted 0xE004 => 0, # umlaut is no different from diaeresis 0x0308 - 0xE005 => 0x0344, # discouraged - 0xE006 => 0x0300, - 0xE007 => 0x0301, - 0xE008 => 0x0302, - 0xE009 => 0x0303, - 0xE00A => 0x0304, - 0xE00B => 0x0306, - 0xE00C => 0x0307, - 0xE00D => 0x0308, - 0xE00E => 0x030A, - 0xE00F => 0x030B, - 0xE010 => 0x030C, - 0xE011 => 0x0327, - 0xE012 => 0x0328, - 0xE013 => 0x0332, - 0xE014 => 0x0333, - 0xE015 => 0x0338, - 0xE016 => 0x0345, - 0xE017 => 0x0314, - 0xE018 => 0x0313, - 0xE019 => 0x1FFE, - 0xE01A => 0x1FBF, - 0xE01B => 0x03D0, # middle beta = curled beta? - 0xE01C => 0x25CB, - 0xE01D => 0x0192, - 0xE01E => 0x0292, - 0xE01F => 0x33C2, # am, compatibility char - 0xE020 => 0x33D8, # pm, compatibility char - 0xE021 => 0x2121, - 0xE022 => 0xFE8E, + 0xE005 => "\x{0344}", # discouraged + 0xE006 => "\x{0300}", + 0xE007 => "\x{0301}", + 0xE008 => "\x{0302}", + 0xE009 => "\x{0303}", + 0xE00A => "\x{0304}", + 0xE00B => "\x{0306}", + 0xE00C => "\x{0307}", + 0xE00D => "\x{0308}", + 0xE00E => "\x{030A}", + 0xE00F => "\x{030B}", + 0xE010 => "\x{030C}", + 0xE011 => "\x{0327}", + 0xE012 => "\x{0328}", + 0xE013 => "\x{0332}", + 0xE014 => "\x{0333}", + 0xE015 => "\x{0338}", + 0xE016 => "\x{0345}", + 0xE017 => "\x{0314}", + 0xE018 => "\x{0313}", + 0xE019 => "\x{1FFE}", + 0xE01A => "\x{1FBF}", + 0xE01B => "\x{03D0}", # middle beta = curled beta? + 0xE01C => "\x{25CB}", + 0xE01D => "\x{0192}", + 0xE01E => "\x{0292}", + 0xE01F => "\x{33C2}", # am, compatibility char + 0xE020 => "\x{33D8}", # pm, compatibility char + 0xE021 => "\x{2121}", + 0xE022 => "\x{FE8E}", 0xE023 => 0, # dutch guilder 0192 is already encoded, and not very useful anyway - 0xE024 => 0x0393, - 0xE025 => 0x20D7, # also 20D1; non-spacing - 0xE026 => 0x1FEF, - 0xE027 => 0x1FC0, - 0xE028 => 0x01F0, #but uppercase + 0xE024 => "\x{0393}", + 0xE025 => "\x{20D7}", # also 20D1; non-spacing + 0xE026 => "\x{1FEF}", + 0xE027 => "\x{1FC0}", + 0xE028 => "\x{01F0}", #but uppercase ); # expect input data source at command line @@ -90,8 +91,9 @@ for (@line) { my ($mnem, $chrhex, $name) = split / +/, $_, 3; next if length $mnem != 2; my $chrnum = hex $chrhex; - $chrnum = $replace{$chrnum} or next if defined $replace{$chrnum}; - say "q{$mnem}=>$chrnum,"; + my $chr = $replace{$chrnum} // chr $chrnum or next; + my $chrstr = pp $chr; + say "q{$mnem} => $chrstr, # $name"; } say '}'; diff --git a/tools/mkdigraphs-shiar b/tools/mkdigraphs-shiar index 4f2b75a..05399b0 100755 --- a/tools/mkdigraphs-shiar +++ b/tools/mkdigraphs-shiar @@ -4,7 +4,7 @@ use strict; use warnings; use open IN => ':utf8', ':std'; -our $VERSION = '1.00'; +our $VERSION = '1.01'; my $di = do "data/digraphs-rfc.inc.pl" or warn "official digraphs not included for comparison: ", $@ // $!; @@ -14,8 +14,8 @@ say '+{'; for (readline) { my ($mnem, $chr) = m{^([!"%'-Z_a-z]{2}) (.)} or next; warn("$mnem already defined"), next if defined $di->{$mnem}; - my $chrnum = ord $chr; - say "q{$1} => $chrnum,"; + my $chrstr = sprintf '"\x{%x}"', ord $chr; + say "q{$mnem} => $chrstr,"; } say '}'; diff --git a/tools/mkdigraphs-vim b/tools/mkdigraphs-vim index 5386010..a4bdfe8 100755 --- a/tools/mkdigraphs-vim +++ b/tools/mkdigraphs-vim @@ -1,6 +1,6 @@ #!/bin/sh -VERSION=1.00 +VERSION=1.01 vim -e -c'echo version' -cdigraphs -cq | perl -CSD -nE ' if ($. == 1) { # head @@ -10,7 +10,8 @@ vim -e -c'echo version' -cdigraphs -cq | perl -CSD -nE ' while (/\G(\S\S) (.[^ ]*) +([0-9]+)\s+/g) { my ($mnem, $chr, $cp) = ($1, $2, $3); $mnem =~ s/(?=[\\}])/\\/g; # escape string delimiter - say "q{$mnem} => $cp,"; + $chrstr = sprintf q("\x{%x}"), $cp; + say "q{$mnem} => $chrstr,"; } } END { # foot say "}"; -- 2.30.0