diff options
author | John Ehresman <jpe@wingware.com> | 2010-04-15 12:57:22 -0400 |
---|---|---|
committer | John Ehresman <jpe@wingware.com> | 2010-04-15 12:57:22 -0400 |
commit | 27e7665c4805eab2f4d97b99436e471cf7ba945c (patch) | |
tree | 3dfe3a248fee559d8d297b80a2b3fddd38f50d14 /codegen/docextract_to_xml.py | |
parent | dc91f48833e5f3b94f02a0be16d0d47c10d364f5 (diff) | |
download | pygobject-27e7665c4805eab2f4d97b99436e471cf7ba945c.tar.gz pygobject-27e7665c4805eab2f4d97b99436e471cf7ba945c.tar.xz pygobject-27e7665c4805eab2f4d97b99436e471cf7ba945c.zip |
Python 3 support for setup.py
Diffstat (limited to 'codegen/docextract_to_xml.py')
-rwxr-xr-x | codegen/docextract_to_xml.py | 101 |
1 files changed, 22 insertions, 79 deletions
diff --git a/codegen/docextract_to_xml.py b/codegen/docextract_to_xml.py index 775b57d..f8d3bae 100755 --- a/codegen/docextract_to_xml.py +++ b/codegen/docextract_to_xml.py @@ -13,18 +13,6 @@ import sys import docextract -def usage(): - sys.stderr.write('usage: docextract_to_xml.py ' + - '[-s /src/dir | --source-dir=/src/dir] ' + - '[-a | --with-annotations] [-p | --with-properties] ' + - '[-i | --with-signals ]\n') - sys.exit(1) - -# Translates special texts to &... HTML acceptable format. Also replace -# occurrences of '/*' and '*/' with '/ *' and '* /' respectively to avoid -# comment errors (note the spaces). Some function descriptions include C++ -# multi-line comments which cause errors when the description is included in a -# C++ Doxygen comment block. def escape_text(unescaped_text): # Escape every "&" not part of an entity reference escaped_text = re.sub(r'&(?![A-Za-z]+;)', '&', unescaped_text) @@ -34,51 +22,31 @@ def escape_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, ' ', ' ') - # This represents a '/' before or after an '*' so replace with slash but - # with spaces. - escaped_text = string.replace(escaped_text, '/', ' / ') # Escape for both tag contents and attribute values escaped_text = string.replace(escaped_text, '<', '<') escaped_text = string.replace(escaped_text, '>', '>') escaped_text = string.replace(escaped_text, '"', '"') - # Replace C++ comment begin and ends to ones that don't affect Doxygen. - escaped_text = string.replace(escaped_text, '/*', '/ *') - escaped_text = string.replace(escaped_text, '*/', '* /') - return escaped_text -def print_annotations(annotations): - for annotation in annotations: - print "<annotation name=" + annotation[0] + ">" + \ - escape_text(annotation[1]) + "</annotation>" - if __name__ == '__main__': try: - opts, args = getopt.getopt(sys.argv[1:], "d:s:o:api", - ["source-dir=", "with-annotations", - "with-properties", "with-signals"]) + opts, args = getopt.getopt(sys.argv[1:], "d:s:o:", + ["source-dir="]) except getopt.error, e: - sys.stderr.write('docextract_to_xml.py: %s\n' % e) - usage() + sys.stderr.write('docgen.py: %s\n' % e) + sys.stderr.write( + 'usage: docgen.py [-s /src/dir]\n') + sys.exit(1) source_dirs = [] - with_annotations = False - with_signals = False - with_properties = False for opt, arg in opts: if opt in ('-s', '--source-dir'): source_dirs.append(arg) - if opt in ('-a', '--with-annotations'): - with_annotations = True - if opt in ('-p', '--with-properties'): - with_properties = True - if opt in ('-i', '--with-signals'): - with_signals = True if len(args) != 0: - usage() + 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. @@ -90,50 +58,25 @@ if __name__ == '__main__': print "<root>" for name, value in docs.items(): - # Get the type of comment block ('function', 'signal' or - # 'property') (the value is a GtkDoc). - block_type = value.get_type() - - # Skip signals if the option was not specified. - if block_type == 'signal' and not with_signals: - continue - # Likewise for properties. - elif block_type == 'property' and not with_properties: - continue - - print "<" + block_type + " name=\"" + escape_text(name) + "\">" + print "<function name=\"" + escape_text(name) + "\">" print "<description>" - print escape_text(value.get_description()) + #The value is a docextract.FunctionDoc + print escape_text(value.description) print "</description>" - # Loop through the parameters if not dealing with a property: - if block_type != 'property': - print "<parameters>" - for name, description, annotations in value.params: - print "<parameter name=\"" + escape_text(name) + "\">" - print "<parameter_description>" + escape_text(description) + "</parameter_description>" - - if with_annotations: - print_annotations(annotations) - - print "</parameter>" - - print "</parameters>" + # 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>" - # Show the return-type (also if not dealing with a property): - if with_annotations: - print "<return>" - print "<return_description>" + escape_text(value.ret[0]) + \ - "</return_description>" - print_annotations(value.ret[1]) - print "</return>" - else: - print "<return>" + escape_text(value.ret[0]) + "</return>" + print "</parameters>" - if with_annotations: - print_annotations(value.get_annotations()) + # Show the return-type: + print "<return>" + escape_text(value.ret) + "</return>" - print "</" + block_type + ">\n" + print "</function>\n" print "</root>" |