diff options
author | Johan Dahlin <johan@gnome.org> | 2008-01-19 12:49:29 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2008-01-19 12:49:29 +0000 |
commit | 9c43da820eb2bd872e58ad12d65ed6c89d556893 (patch) | |
tree | e4f897f87a5cc9585495b7e41170bf770ebb56a2 /codegen/docextract_to_xml.py | |
parent | 23df5efb74f6b9b6c5da7a8db89ccd612533327d (diff) | |
download | pygobject-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-x | codegen/docextract_to_xml.py | 77 |
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, '<', '<') + 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 "<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>" |