Allows custom representation consisting of multiple characters.
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
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}++;
}
}
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'
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";
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
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 '}';
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: ", $@ // $!;
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 '}';
#!/bin/sh
-VERSION=1.00
+VERSION=1.01
vim -e -c'echo version' -cdigraphs -cq | perl -CSD -nE '
if ($. == 1) { # head
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 "}";