summaryrefslogtreecommitdiffstats
path: root/codegen/docextract_to_xml.py
diff options
context:
space:
mode:
authorJohan Dahlin <johan@gnome.org>2008-01-19 12:49:29 +0000
committerJohan Dahlin <johan@src.gnome.org>2008-01-19 12:49:29 +0000
commit9c43da820eb2bd872e58ad12d65ed6c89d556893 (patch)
treee4f897f87a5cc9585495b7e41170bf770ebb56a2 /codegen/docextract_to_xml.py
parent23df5efb74f6b9b6c5da7a8db89ccd612533327d (diff)
downloadpygobject-9c43da820eb2bd872e58ad12d65ed6c89d556893.tar.gz
pygobject-9c43da820eb2bd872e58ad12d65ed6c89d556893.tar.xz
pygobject-9c43da820eb2bd872e58ad12d65ed6c89d556893.zip
Import codegen from pygtk. Add initial gio and gio.unix bindings.
2008-01-19 Johan Dahlin <johan@gnome.org> * Makefile.am: * codegen/Makefile.am: * codegen/README.defs: * codegen/__init__.py: * codegen/argtypes.py: * codegen/code-coverage.py: * codegen/codegen.py: * codegen/createdefs.py: * codegen/definitions.py: * codegen/defsconvert.py: * codegen/defsgen.py: * codegen/defsparser.py: * codegen/docextract.py: * codegen/docextract_to_xml.py: * codegen/docgen.py: * codegen/h2def.py: * codegen/mergedefs.py: * codegen/missingdefs.py: * codegen/mkskel.py: * codegen/override.py: * codegen/pygtk-codegen-2.0.in: * codegen/reversewrapper.py: * codegen/scanvirtuals.py: * codegen/scmexpr.py: * configure.ac: * gio/Makefile.am: * gio/__init__.py: * gio/gio-types.defs: * gio/gio.defs: * gio/gio.override: * gio/giomodule.c: (init_gio): * gio/unix-types.defs: * gio/unix.defs: * gio/unix.override: * gio/unixmodule.c: (initunix): Import codegen from pygtk. Add initial gio and gio.unix bindings. svn path=/trunk/; revision=730
Diffstat (limited to 'codegen/docextract_to_xml.py')
-rwxr-xr-xcodegen/docextract_to_xml.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/codegen/docextract_to_xml.py b/codegen/docextract_to_xml.py
new file mode 100755
index 0000000..76ac85d
--- /dev/null
+++ b/codegen/docextract_to_xml.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+# -*- Mode: Python; py-indent-offset: 4 -*-
+#
+# This litte script outputs the C doc comments to an XML format.
+# So far it's only used by gtkmm (The C++ bindings). Murray Cumming.
+# Usage example:
+# # ./docextract_to_xml.py -s /gnome/head/cvs/gtk+/gtk/ -s /gnome/head/cvs/gtk+/docs/reference/gtk/tmpl/ > gtk_docs.xml
+
+import getopt
+import string
+import sys
+
+import docextract
+
+def escape_text(unescaped_text):
+ escaped_text = unescaped_text
+ escaped_text = string.replace(escaped_text, '<', '&lt;')
+ escaped_text = string.replace(escaped_text, '>', '&gt;')
+ escaped_text = string.replace(escaped_text, '&', '&amp;')
+ escaped_text = string.replace(escaped_text, '\'', '&apos;')
+ escaped_text = string.replace(escaped_text, '\"', '&quot;')
+
+ #Apparently this is an undefined symbol:
+ escaped_text = string.replace(escaped_text, '&mdash;', ' mdash ')
+
+ return escaped_text
+
+if __name__ == '__main__':
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "d:s:o:",
+ ["source-dir="])
+ except getopt.error, e:
+ sys.stderr.write('docgen.py: %s\n' % e)
+ sys.stderr.write(
+ 'usage: docgen.py [-s /src/dir]\n')
+ sys.exit(1)
+ source_dirs = []
+ for opt, arg in opts:
+ if opt in ('-s', '--source-dir'):
+ source_dirs.append(arg)
+ if len(args) != 0:
+ sys.stderr.write(
+ 'usage: docgen.py [-s /src/dir]\n')
+ sys.exit(1)
+
+ docs = docextract.extract(source_dirs);
+ docextract.extract_tmpl(source_dirs, docs); #Try the tmpl sgml files too.
+
+ # print d.docs
+
+ if docs:
+
+ print "<root>"
+
+ for name, value in docs.items():
+ print "<function name=\"" + escape_text(name) + "\">"
+
+ print "<description>"
+ #The value is a docextract.FunctionDoc
+ print escape_text(value.description)
+ print "</description>"
+
+ # Loop through the parameters:
+ print "<parameters>"
+ for name, description in value.params:
+ print "<parameter name=\"" + escape_text(name) + "\">"
+ print "<parameter_description>" + escape_text(description) + "</parameter_description>"
+ print "</parameter>"
+
+ print "</parameters>"
+
+ # Show the return-type:
+ print "<return>" + escape_text(value.ret) + "</return>"
+
+ print "</function>\n"
+
+ print "</root>"