From a95d0c23c5adb77eb5c74dfcf473e85542db0b12 Mon Sep 17 00:00:00 2001
From: "SND\\kernelnet_cp"
 <SND\kernelnet_cp@9b283d60-5439-405e-af05-b73fd8c4d996>
Date: Tue, 19 Apr 2011 15:55:06 +0000
Subject: [PATCH] [snippets] added: pytowiki script for formatting help for
 codeplex wiki

git-svn-id: https://pykd.svn.codeplex.com/svn@64230 9b283d60-5439-405e-af05-b73fd8c4d996
---
 snippets/pytowiki.py | 91 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 91 insertions(+)
 create mode 100644 snippets/pytowiki.py

diff --git a/snippets/pytowiki.py b/snippets/pytowiki.py
new file mode 100644
index 0000000..2826e85
--- /dev/null
+++ b/snippets/pytowiki.py
@@ -0,0 +1,91 @@
+#
+#
+#
+
+import sys
+
+
+def usage():
+    pass
+
+
+class CodeplexFormatter:
+
+    def header1( self, s ):
+        return "! " + s + "\n"
+
+    def header2( self, s ):
+        return "!! " + s + "\n"
+
+    def header3( self, s ):
+        return "!!! " + s + "\n"
+
+    def bulletItem( self, s ):
+        return "* " + s + "\n"
+
+
+class ModuleInfo:
+
+    def __init__ (self, module):
+        self.funcs = sorted( [ item for item in module.__dict__.values() if type(item).__name__ == "function" ], key=lambda x: x.__name__ ) 
+        self.classes = sorted( [ item for item in module.__dict__.values() if type(item).__name__ == "class" ],  key=lambda x: x.__name__ ) 
+
+
+def buildDoc( ioStream, formatter, apiInfo ):
+  
+    ioStream.write( formatter.header2( "Functions" ) )
+
+    for func in apiInfo.funcs:
+        ioStream.write( formatter.bulletItem( func.__name__ ) )
+
+    ioStream.write( formatter.header2( "Classes" ) )
+
+    for cls in apiInfo.classes:
+        ioStream.write( formatter.bulletItem( cls.__name__ ) )
+
+
+    for func in apiInfo.funcs:
+        ioStream.write( formatter.header3( func.__name__ ) )
+        ioStream.write( func.__doc__ + "\n" )
+
+
+    for cls in apiInfo.classes:
+        ioStream.write( formatter.header3( cls.__name__ ) )	
+        ioStream.write( cls.__doc__ + "\n" )
+
+
+
+def buildFuncDir( ioStream, funcs ):
+    pass
+
+def buildClassDir( ioStream, classes ):
+    pass
+
+
+def main():
+
+    if len(sys.argv) < 2:
+        usage()
+        return
+
+    moduleName = sys.argv[1]
+
+    try:
+
+        module = __import__( moduleName )
+
+        with file( "wiki.txt", "w" ) as wikiIo:
+
+            apiInfo = ModuleInfo( module )
+
+            formatter = CodeplexFormatter()
+
+            buildDoc( wikiIo, formatter, apiInfo )         
+
+    except ImportWarning:
+
+        print "failed to import module " + moduleName
+	
+
+if __name__ == "__main__":
+    main()