From 9c43da820eb2bd872e58ad12d65ed6c89d556893 Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Sat, 19 Jan 2008 12:49:29 +0000 Subject: Import codegen from pygtk. Add initial gio and gio.unix bindings. 2008-01-19 Johan Dahlin * 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 --- codegen/docextract_to_xml.py | 77 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 codegen/docextract_to_xml.py (limited to 'codegen/docextract_to_xml.py') 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, '<', '<') + escaped_text = string.replace(escaped_text, '>', '>') + escaped_text = string.replace(escaped_text, '&', '&') + escaped_text = string.replace(escaped_text, '\'', ''') + escaped_text = string.replace(escaped_text, '\"', '"') + + #Apparently this is an undefined symbol: + escaped_text = string.replace(escaped_text, '—', ' 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 "" + + for name, value in docs.items(): + print "" + + print "" + #The value is a docextract.FunctionDoc + print escape_text(value.description) + print "" + + # Loop through the parameters: + print "" + for name, description in value.params: + print "" + print "" + escape_text(description) + "" + print "" + + print "" + + # Show the return-type: + print "" + escape_text(value.ret) + "" + + print "\n" + + print "" -- cgit