summaryrefslogtreecommitdiffstats
path: root/codegen/docextract_to_xml.py
diff options
context:
space:
mode:
authorJohn Ehresman <jpe@wingware.com>2010-04-15 12:57:22 -0400
committerJohn Ehresman <jpe@wingware.com>2010-04-15 12:57:22 -0400
commit27e7665c4805eab2f4d97b99436e471cf7ba945c (patch)
tree3dfe3a248fee559d8d297b80a2b3fddd38f50d14 /codegen/docextract_to_xml.py
parentdc91f48833e5f3b94f02a0be16d0d47c10d364f5 (diff)
downloadpygobject-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-xcodegen/docextract_to_xml.py101
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]+;)', '&amp;', unescaped_text)
@@ -34,51 +22,31 @@ def escape_text(unescaped_text):
escaped_text = string.replace(escaped_text, '&ast;', '*')
escaped_text = string.replace(escaped_text, '&percnt;', '%')
escaped_text = string.replace(escaped_text, '&commat;', '@')
- escaped_text = string.replace(escaped_text, '&num;', '')
- escaped_text = string.replace(escaped_text, '&nbsp;', ' ')
- # This represents a '/' before or after an '*' so replace with slash but
- # with spaces.
- escaped_text = string.replace(escaped_text, '&sol;', ' / ')
# Escape for both tag contents and attribute values
escaped_text = string.replace(escaped_text, '<', '&lt;')
escaped_text = string.replace(escaped_text, '>', '&gt;')
escaped_text = string.replace(escaped_text, '"', '&quot;')
- # 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>"