57 lines
820 B
Perl
57 lines
820 B
Perl
|
|
open(MAP, "> ucs_isdigit.map");
|
|
print MAP <<EOF;
|
|
/*
|
|
File generated from UnicodeData-4.1.0.txt.
|
|
*/
|
|
|
|
EOF
|
|
|
|
for (<DATA>) {
|
|
chop;
|
|
($name, $class) = split;
|
|
|
|
@cp = ();
|
|
|
|
open(UCD, "< private/UnicodeData-4.1.0.txt");
|
|
while(<UCD>) {
|
|
chop;
|
|
@entry = split(';');
|
|
last if $entry[0] =~ m/.{5,}/;
|
|
if ($entry[2] eq $class) {
|
|
push (@cp, $entry[0]);
|
|
}
|
|
}
|
|
close UCD;
|
|
|
|
@bs = ();
|
|
$last = -1;
|
|
$seq = -1;
|
|
for my $e (@cp) {
|
|
if (++$last != hex $e) {
|
|
$seq = $e;
|
|
$last = hex $e;
|
|
push (@bs, $seq);
|
|
}
|
|
$end{$seq} = $e;
|
|
}
|
|
$nobs = @bs;
|
|
|
|
print MAP <<EOF;
|
|
|
|
#define N_ucs_${name}_map ${nobs}
|
|
|
|
static wc_map ucs_${name}_map[ N_ucs_${name}_map ] = {
|
|
EOF
|
|
|
|
for (@bs) {
|
|
print MAP " { 0x$_, 0x$end{$_} },\n";
|
|
}
|
|
print MAP <<EOF
|
|
};
|
|
EOF
|
|
}
|
|
|
|
__END__
|
|
isdigit Nd
|