X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=unicode-expand.pl;h=a46f6b5813148fa902e29097986b28d60c3581d7;hb=d5dceb5578ac606ef0289656c332e06e7a13b78c;hp=d81948cadfa7efa27869d305625959ed6def15d4;hpb=a3186b959d8a7bb78456d8a58159b348a501951f;p=unicode-expand.git diff --git a/unicode-expand.pl b/unicode-expand.pl index d81948c..a46f6b5 100644 --- a/unicode-expand.pl +++ b/unicode-expand.pl @@ -55,19 +55,28 @@ sub expand_topic { } sub expand_char { - my ($char) = @_; + my ($string) = @_; - my $name = charnames::viacode(ord $1); - $name = sprintf("{%X}", ord $1) unless defined($name); + my $expansion = ""; - return $name; + for my $c (split //,$string) { + my $name = charnames::viacode(ord $c); + $name = sprintf("{%X}", ord $c) unless defined($name); + if (length($expansion) == 0) { + $expansion .= $name; + } else { + $expansion .= "; " . $name; + } + } + + return $expansion; } sub expand { my ($server, $target, $data) = @_; $data = decode_utf8($data); - $data =~ s{([^\p{Letter}\p{Punctuation}\p{Control}\p{Space}\p{Sc}[:ascii:]])}{ + $data =~ s{([^\p{Letter}\p{Punctuation}\p{Control}\p{Space}\p{Sc}[:ascii:]]+)}{ "${1} [".expand_char($1)."]" }ge;