Annotation of parser3/src/main/helpers/simple_folding.pl, revision 1.1
1.1 ! paf 1: # Parser: covertor of UNICODE casing data
! 2: # http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
! 3: # to parser source code
! 4: #
! 5: # Copyright (c) 2003 ArtLebedev Group (http://www.artlebedev.com)
! 6: # Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
! 7:
! 8: # $Id$
! 9:
! 10: # usage:
! 11: # download CaseFolding.txt
! 12: # run simple_folding.pl < CaseFolding.txt
! 13: #
! 14:
! 15: while(<>){
! 16: chomp;
! 17: # <code>; <status>; <mapping>; # <name>
! 18: #1FAF; F; 1F67 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
! 19: my($code, $status, $mapping)=split /;\s*/;
! 20:
! 21: #we need only
! 22: next if
! 23: $code eq ""
! 24: || $code=~/^#/
! 25: || $status eq 'F'
! 26: || length($code)>4
! 27: || length($mapping)>4;
! 28: # print "$_\n";
! 29: $toLower{$code}=$mapping unless defined $toLower{$code};
! 30: $toUpper{$mapping}=$code unless defined $toUpper{$mapping};;
! 31: }
! 32:
! 33: output(\%toLower, 'utf8-to-lower.inc');
! 34: output(\%toUpper, 'utf8-to-upper.inc');
! 35:
! 36: sub output{
! 37: my($tableRef, $name)=@_;
! 38: open F, ">../$name";
! 39: my($first)=1;
! 40: my($counter)=0;
! 41: foreach $key(sort {$a cmp $b} keys %$tableRef) {
! 42: if(!$first){
! 43: print F ', ';
! 44: }
! 45: undef $first;
! 46: if(++$counter>4) {
! 47: print F "\n";
! 48: $counter=1;
! 49: }
! 50: print F "{0x", $key, ", 0x", $tableRef->{$key}, "}";
! 51: }
! 52: print F "\n";
! 53: close F;
! 54: }
E-mail: