diff options
Diffstat (limited to 'libjava/scripts/blocks.pl')
-rw-r--r-- | libjava/scripts/blocks.pl | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/libjava/scripts/blocks.pl b/libjava/scripts/blocks.pl new file mode 100644 index 0000000..4009671 --- /dev/null +++ b/libjava/scripts/blocks.pl @@ -0,0 +1,48 @@ +#! /usr/bin/perl + +if ($ARGV[0] eq '') +{ + $file = 'Blocks.txt'; + if (! -f $file) + { + # Too painful to figure out how to get Perl to do it. + # FIXME. + system 'wget -o .wget-log http://www.isi.edu/in-notes/iana/unidata/Blocks.txt'; + } +} +else +{ + $file = $ARGV[0]; +} + +open (INPUT, "< $file") || die "couldn't open $file: $!"; + +@array = (); +while (<INPUT>) +{ + next if /^#/; + chop; + + ($start, $to, $text) = split (/; /); + ($symbol = $text) =~ tr/a-z/A-Z/; + $symbol =~ s/[- ]/_/g; + + # Special case for one of the SPECIALS. + next if $start eq 'FEFF'; + + printf " public static final UnicodeBlock %s = new UnicodeBlock (\"%s\", '\\u%s', '\\u%s');\n", + $symbol, $text, $start, $to; + + push (@array, $symbol); +} + +printf " private static final UnicodeBlock[] blocks = {\n"; +foreach (@array) +{ + printf " %s", $_; + printf "," unless $_ eq 'SPECIALS'; + printf "\n"; +} +printf " };\n"; + +close (INPUT); |