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()