updated the python extractor to generate cross-references, and
* doc/api.xsl doc/APIconstructors.html doc/APIfiles.html
doc/APIfunctions.html doc/APIsymbols.html doc/libxml2-refs.xml
doc/parsedecl.py doc/Makefile.am: updated the python extractor
to generate cross-references, and added/updated the stylesheets
to generate and link API indexes. The generic keyword index
is not done yet.
* doc/*.html: regenerated all the usual docs too
Daniel
diff --git a/doc/parsedecl.py b/doc/parsedecl.py
index 9bccabd..4e000e3 100755
--- a/doc/parsedecl.py
+++ b/doc/parsedecl.py
@@ -8,6 +8,8 @@
import sys
import string
+ids = {}
+
macros = {}
variables = {}
structs = {}
@@ -369,9 +371,10 @@
return
nbcomments = nbcomments + 1
-def insertComment(name, title, value):
+def insertComment(name, title, value, id):
global nbcomments
+ ids[name] = id
if functions.has_key(name):
functions[name][2] = value
return "function"
@@ -398,6 +401,7 @@
return "unknown"
nbcomments = nbcomments + 1
+
import os
import xmllib
try:
@@ -514,15 +518,16 @@
self._data = []
elif tag == 'anchor' and self.id == None:
if attrs.has_key('id'):
- self.id = attrs['id']
- self.id = string.replace(self.id, '-CAPS', '')
+ self.orig_id = attrs['id']
+ self.id = string.replace(self.orig_id, '-CAPS', '')
self.id = string.replace(self.id, '-', '_')
def end(self, tag):
if debug:
print "end %s" % tag
if tag == 'refsect2':
- self.type = insertComment(self.id, self.title, self.string)
+ self.type = insertComment(self.id, self.title, self.string,
+ self.orig_id)
self.string = None
elif tag == 'row':
if self.parameter_info != None and self.parameter_info != '':
@@ -727,4 +732,87 @@
print "Symbol %s not found in identifiers list" % (i)
output.write(" </symbols>\n")
output.write("</api>\n")
+output.close()
print "generated XML for %d symbols" % (len(symbols))
+
+##################################################################
+#
+# Saving: libxml2-api.xml
+#
+##################################################################
+
+hash = {}
+for file in files.keys():
+ for symbol in files[file]:
+ hash[symbol] = file
+
+def link(id):
+ if ids.has_key(id):
+ target = string.upper(ids[id])
+ else:
+ target = string.upper(id)
+ file = 'html/libxml-' + string.lower(hash[id]) + '.html';
+ return file + '#' + target
+
+print "Saving XML crossreferences libxml2-refs.xml"
+output = open("libxml2-refs.xml", "w")
+output.write("<apirefs name='libxml2'>\n")
+output.write(" <references>\n")
+typ = ids.keys()
+typ.sort()
+for id in typ:
+ output.write(" <reference name='%s' href='%s'/>\n" % (id, link(id)))
+output.write(" </references>\n")
+output.write(" <alpha>\n")
+letter = None
+ids = ids.keys()
+ids.sort()
+for id in ids:
+ if id[0] != letter:
+ if letter != None:
+ output.write(" </letter>\n")
+ letter = id[0]
+ output.write(" <letter name='%s'>\n" % (letter))
+ output.write(" <ref name='%s'/>\n" % (id))
+if letter != None:
+ output.write(" </letter>\n")
+output.write(" </alpha>\n")
+output.write(" <constructors>\n")
+typ = ret_types.keys()
+typ.sort()
+for type in typ:
+ if type == '' or type == 'void' or type == "int" or type == "char *" or \
+ type == "const char *" :
+ continue
+ output.write(" <type name='%s'>\n" % (type))
+ ids = ret_types[type]
+ for id in ids:
+ output.write(" <ref name='%s'/>\n" % (id))
+ output.write(" </type>\n")
+output.write(" </constructors>\n")
+output.write(" <functions>\n")
+typ = types.keys()
+typ.sort()
+for type in typ:
+ if type == '' or type == 'void' or type == "int" or type == "char *" or \
+ type == "const char *" :
+ continue
+ output.write(" <type name='%s'>\n" % (type))
+ ids = types[type]
+ for id in ids:
+ output.write(" <ref name='%s'/>\n" % (id))
+ output.write(" </type>\n")
+output.write(" </functions>\n")
+
+output.write(" <files>\n")
+typ = files.keys()
+typ.sort()
+for file in typ:
+ output.write(" <file name='%s'>\n" % (file))
+ for id in files[file]:
+ output.write(" <ref name='%s'/>\n" % (id))
+ output.write(" </file>\n")
+output.write(" </files>\n")
+output.write("</apirefs>\n")
+output.close()
+print "generated %d XML references" % (len(ids))