Imported Upstream version 0.66.1
[hcoop/debian/courier-authlib.git] / libs / unicode / mkhtmlent.pl
CommitLineData
b0322a85
CE
1#! /usr/bin/perl
2#
3# Compile list of HTML 4.0/XHTML entities.
4
5my %ent=("amp" => 38, "lt" => 60, "gt" => 62);
6
7foreach ("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
22print "static const char n[]={\n";
23
24my $prev="\t";
25
26foreach (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
51substr($prev, 0, 1)=" ";
52
53$prev =~ s/\t//;
54
55print "$prev};\n\nstatic const struct i ii[]={";
56
57$prev="\n\t";
58
59my $n=0;
60
61foreach (sort keys %ent)
62{
63 print $prev . "{$n, " . length($_) . ", $ent{$_}" . "}";
64
65 $n += length($_);
66 $prev=",\n\t";
67}
68
69print "\n};\n";