summaryrefslogtreecommitdiff
path: root/db-4.8.30/dist/s_javadoc_merge
diff options
context:
space:
mode:
Diffstat (limited to 'db-4.8.30/dist/s_javadoc_merge')
-rwxr-xr-xdb-4.8.30/dist/s_javadoc_merge45
1 files changed, 45 insertions, 0 deletions
diff --git a/db-4.8.30/dist/s_javadoc_merge b/db-4.8.30/dist/s_javadoc_merge
new file mode 100755
index 0000000..fc89fa0
--- /dev/null
+++ b/db-4.8.30/dist/s_javadoc_merge
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+from glob import glob
+import os, re, sys
+
+classre = re.compile(r'(?P<javadoc>(/\*\*([^/]|/[^*])*?\*/\s*)?)(?P<mods>public\s+((abstract)\s+)*)(?P<class_type>(class|interface)\s+)?(?P<class_name>\w+)\s*(?P<end>(extends|implements|{))', re.DOTALL)
+fieldre = re.compile(r'(?P<javadoc>(/\*\*([^/]|/[^*])*?\*/\s*)?)(?P<mods>public\s+((abstract|final|static)\s+)*)(?P<field_type>\w+\s+)?(?P<field_name>\w+)(?P<params>\s*(\(.*?\)|=|;))', re.DOTALL)
+paramre = re.compile(r'\s*(?:final\s*)?(?P<param_type>\w+(\[\])?)\s+(?P<param_name>\w+)\s*(?P<comma>,?)')
+
+def fieldsig(m):
+ return '%s%s' % (m.group('field_name'), paramre.sub('\g<param_type>\g<comma>', m.group('params') or ''))
+
+def parse(input):
+ javadoc = {}
+ for m in classre.finditer(input):
+ javadoc[m.group('class_name')] = m.group('javadoc')
+ for m in fieldre.finditer(input):
+ javadoc[fieldsig(m)] = m.group('javadoc')
+ return javadoc
+
+def mkclass(m):
+ #if debug:
+ #print "Looking up", m.group('class_name')
+ return '%s%s%s%s %s' % (javadoc.get(m.group('class_name'), '/** TODO */\n'), m.group('mods'), (m.group('class_type') or ''), m.group('class_name'), m.group('end'))
+
+def mkfield(m):
+ #if debug:
+ #print "Looking up", fieldsig(m)
+ return '%s%s%s%s%s' % (javadoc.get(fieldsig(m), '/** TODO */\n '), m.group('mods'), (m.group('field_type') or ''), m.group('field_name'), m.group('params'))
+
+if len(sys.argv) < 3 or not os.path.isfile(sys.argv[1]) or not os.path.isfile(sys.argv[2]):
+ print >>sys.stderr, "Usage %s <docfile> <srcfile>" % sys.argv[0]
+ sys.exit(-1)
+docfile, srcfile = sys.argv[1:3]
+
+# Parse the javadoc from the doc file
+#debug = True or (os.path.basename(docfile) == 'Database.java')
+javadoc = parse(open(docfile).read())
+#if debug:
+ #print repr(javadoc)
+
+# Merge the javadoc with the source file
+newsrc = classre.sub(mkclass, open(srcfile).read())
+newsrc = fieldre.sub(mkfield, newsrc)
+sys.stdout.write(newsrc)