Imported Upstream version 0.66.1
[hcoop/debian/courier-authlib.git] / libs / unicode / mkhtmlent.pl
1 #! /usr/bin/perl
2 #
3 # Compile list of HTML 4.0/XHTML entities.
4
5 my %ent=("amp" => 38, "lt" => 60, "gt" => 62);
6
7 foreach ("xhtml-lat1.ent", "xhtml-special.ent", "xhtml-symbol.ent")
8 {
9 open(F, "<$_") or die "$_: $!\n";
10
11 my $l;
12
13 while (defined($l=<F>))
14 {
15 chomp $l;
16 next unless $l =~ m/^<!ENTITY\s+([^\s]+)\s+"&#(\d+);">/;
17
18 $ent{$1}=$2;
19 }
20 }
21
22 print "static const char n[]={\n";
23
24 my $prev="\t";
25
26 foreach (sort keys %ent)
27 {
28 my $n=$_;
29
30 my $str="";
31
32 print $prev;
33 $prev="";
34
35 foreach (0..length($n)-1)
36 {
37 $str .= $prev . ord(substr($n, $_, 1));
38 $prev=", ";
39 }
40
41 print $str;
42
43 $prev=",";
44
45 $prev .= (" " x (40 - length($str)))
46 if (length($str) < 40);
47
48 $prev .= " /* $n */\n\t";
49 }
50
51 substr($prev, 0, 1)=" ";
52
53 $prev =~ s/\t//;
54
55 print "$prev};\n\nstatic const struct i ii[]={";
56
57 $prev="\n\t";
58
59 my $n=0;
60
61 foreach (sort keys %ent)
62 {
63 print $prev . "{$n, " . length($_) . ", $ent{$_}" . "}";
64
65 $n += length($_);
66 $prev=",\n\t";
67 }
68
69 print "\n};\n";