use strict;
use warnings;
use utf8;
use Text::Unidecode;
print("// File autogenerated with /scripts/generate_map.pl\n\n");
print("extern crate phf;\n\n");
print("pub static MAPPING: phf::Map<char, &'static str> = phf_map! {\n");
for (my $i = 0; $i <= 0xffff; $i++) {
if (($i < 0 || $i > 0xD7FF) && ($i < 0xE000 || $i > 0x10FFFF)) {
next;
}
my $k = "'\\u\{" . sprintf("%x", $i) . "\}'";
my $v = "\"";
my $ch = '';
foreach $ch (split //, unidecode(chr($i))) {
$v .= "\\u\{" . sprintf("%x", ord($ch)) . "\}";
}
$v .= "\"";
if (length $v > 2) {
print(" $k => $v,\n");
}
}
print("\};");