dc43c1cb8056ac00a175e48a225b3a82aa2e4ced
[dragonfly.git] / tools / tools / locale / tools / UTF82encoding.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Data::Dumper;
5
6 if ($#ARGV != 1) {
7         print "Usage: $0 <cldr dir> <input file>\n";
8         exit;
9 }
10
11 open(FIN, "$ARGV[0]/posix/UTF-8.cm");
12 my @lines = <FIN>;
13 chomp(@lines);
14 close(FIN);
15
16 my %cm = ();
17 foreach my $line (@lines) {
18         next if ($line =~ /^#/);
19         next if ($line eq "");
20         next if ($line !~ /^</);
21
22         my @a = split(" ", $line);
23         next if ($#a != 1);
24
25         $a[1] =~ s/\\x//g;
26         $a[0] =~ s/_/ /g;
27         $cm{$a[1]} = $a[0] if (!defined $cm{$a[1]});
28 }
29
30 open(FIN, $ARGV[1]);
31 @lines = <FIN>;
32 chomp(@lines);
33 close(FIN);
34
35 foreach my $line (@lines) {
36         if ($line =~ /^#/) {
37                 print "$line\n";
38                 next;
39         }
40
41         my @l = split(//, $line);
42         for (my $i = 0; $i <= $#l; $i++) {
43                 my $hex = sprintf("%X", ord($l[$i]));
44
45                 if ((                 $l[$i] gt "\x20")
46                  && ($l[$i] lt "a" || $l[$i] gt "z")
47                  && ($l[$i] lt "A" || $l[$i] gt "Z")
48                  && ($l[$i] lt "0" || $l[$i] gt "9")
49                  && ($l[$i] lt "\x80")) {
50                         print $l[$i];
51                         next;
52                 }
53
54                 if (defined $cm{$hex}) {
55                         print $cm{$hex};
56                         next;
57                 }
58
59                 $hex = sprintf("%X%X", ord($l[$i]), ord($l[$i + 1]));
60                 if (defined $cm{$hex}) {
61                         $i += 1;
62                         print $cm{$hex};
63                         next;
64                 }
65
66                 $hex = sprintf("%X%X%X",
67                     ord($l[$i]), ord($l[$i + 1]), ord($l[$i + 2 ]));
68                 if (defined $cm{$hex}) {
69                         $i += 2;
70                         print $cm{$hex};
71                         next;
72                 }
73
74                 print "\n--$hex--\n";
75         }
76         print "\n";
77
78 }