| #! /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. |
| system 'wget -o .wget-log http://www.unicode.org/Public/UNIDATA/Blocks.txt'; |
| } |
| } |
| else |
| { |
| $file = $ARGV[0]; |
| } |
| |
| open (INPUT, "< $file") || die "couldn't open $file: $!"; |
| |
| @array = (); |
| while (<INPUT>) |
| { |
| next if /^#/; |
| chop; |
| next if /^$/; |
| |
| ($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'; |
| |
| # Special case some areas that our heuristic mishandles. |
| if ($symbol eq 'HIGH_SURROGATES') |
| { |
| $symbol = 'SURROGATES_AREA'; |
| $text = 'Surrogates Area'; |
| $to = 'DFFF'; |
| } |
| elsif ($symbol =~ /SURROGATES/) |
| { |
| next; |
| } |
| elsif ($symbol eq 'PRIVATE_USE') |
| { |
| $symbol .= '_AREA'; |
| $text = 'Private Use Area'; |
| } |
| |
| 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); |