#!/usr/bin/tclsh
# get names for html-4.0 characters from:
# http://www.w3.org/TR/REC-html40/sgml/entities.html
set f [open entities.html r]
set entity_name_length_max 0
set nr_of_entities 0
while {! [eof $f]} {
set rec [gets $f]
if {[scan $rec {<!ENTITY %s CDATA "&#%d;"; --} name val] == 2} {
set entity($name) $val
set entity_name_length [string length $name]
if {$entity_name_length > $entity_name_length_max} {
set entity_name_length_max $entity_name_length
}
incr nr_of_entities
}
}
close $f
set f [open entities.h w]
puts $f "/*"
puts $f " * Generated file - do not edit directly."
puts $f " *"
puts $f " * This file was generated from:"
puts $f " * http://www.w3.org/TR/REC-html40/sgml/entities.html"
puts $f " * by means of the script:"
puts $f " * entities.tcl"
puts $f " */"
puts $f ""
puts $f "#ifdef __cplusplus"
puts $f "extern \"C\" {"
puts $f "#endif"
puts $f ""
puts $f "static struct entities_s {"
puts $f " char *name;"
puts $f " int value;"
puts $f "} entities\[\] = {"
foreach name [lsort [array names entity]] {
puts $f " {\"$name\", $entity($name)},"
}
puts $f "};"
puts $f ""
puts $f "#define ENTITY_NAME_LENGTH_MAX $entity_name_length_max"
puts $f "#define NR_OF_ENTITIES $nr_of_entities"
puts $f ""
puts $f "#ifdef __cplusplus"
puts $f "}"
puts $f "#endif"
close $f