Commit | Line | Data |
---|---|---|
b0322a85 CE |
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"; |