Thread: [Happydoc-checkins] CVS: HappyDoc3/happydoclib appclass.py,1.3,1.4
Brought to you by:
doughellmann,
krlosaqp
From: Doug H. <dou...@us...> - 2002-11-17 16:21:33
|
Update of /cvsroot/happydoc/HappyDoc3/happydoclib In directory usw-pr-cvs1:/tmp/cvs-serv27019/happydoclib Modified Files: appclass.py Log Message: Different parsing routines based on the file extension. Simple, simulated, output writer that really just prints filenames. Index: appclass.py =================================================================== RCS file: /cvsroot/happydoc/HappyDoc3/happydoclib/appclass.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** appclass.py 17 Nov 2002 15:15:26 -0000 1.3 --- appclass.py 17 Nov 2002 16:21:31 -0000 1.4 *************** *** 67,70 **** --- 67,71 ---- import happydoclib from happydoclib.scanner import Scanner + from happydoclib.trace import trace # *************** *** 129,133 **** self.addIgnoreDirectoryPattern('(CVS|dist|build|docs?|.*pyc|.*~)') - ## self.parser_function = happydoclib.parseinfo.getDocs return --- 130,133 ---- *************** *** 313,379 **** return scanner ! def parseInputs(self, scanner): ! package_trees = scanner.getPackageTrees() ! ! for package_tree in package_trees: ! pass ! ! return ! ! def main(self, *args): ! self.statusMessage('%s version %s' % (self._app_name, ! self._app_version)) # ! # Get the list of modules to input # ! if not args: ! # ! # No files specified, print a help message and exit. ! # ! self.showHelp('Specify input file(s) to be processed.') ! raise self.HelpRequested, 'No input file(s) specified.' else: ! input_modules = [] ! for input_module_name in args: ! input_modules.append(os.path.normcase(input_module_name)) # ! # Create the scanner, and get the package trees. # ! scanner = self.scanForInput(input_modules) ! self.showPackageTree(scanner) return ! def showPackageTree(self, scanner): package_trees = scanner.getPackageTrees() for package_tree in package_trees: ! package_tree.walk(self.showPackageTreeCB) ! return - def showPackageTreeCB(self, packageTreeNode): - path = packageTreeNode.getPath() - indent = ' ' * len(path) - self.statusMessage('%s%s' % (indent, packageTreeNode.getName())) return ! ! def old_main(self, *args): ! self.statusMessage('%s version %s' % (self._app_name, ! self._app_version)) ! # ! # Debug info about where the docsets and formatters come from ! # ! self.statusMessage('Docstring converters from %s' % \ ! happydoclib.docstring.__path__[0], 1) ! self.statusMessage('Docsets list from %s' % \ ! happydoclib.docset.__path__[0], 1) ! self.statusMessage('Formatters from %s' % \ ! happydoclib.formatter.__path__[0], 1) # # Set default parser params --- 313,477 ---- return scanner ! def parsePythonInput(self, packageTreeNode): ! trace.into('HappyDoc', 'parsePythonInput', ! packageTreeNode=packageTreeNode, ! ) ! # ! # Derive the filename for this module. ! # ! node_path = packageTreeNode.getPath(1) ! filename = apply(os.path.join, node_path) ! trace.writeVar(filename=filename) ! self.statusMessage('Parsing: %s' % filename) # ! # Figure out if there is a parent node for the ! # documentation suite. # ! package_parent = packageTreeNode.getParent() ! if package_parent and hasattr(package_parent, 'docs'): ! docs_parent = package_parent.docs else: ! docs_parent = None + trace.writeVar(docs_parent=docs_parent) + + docs = happydoclib.parseinfo.getDocs( + parent=docs_parent, + fileName=filename, + includeComments=self.include_comments, + defaultConfigValues=self.parser_params, + ) + + packageTreeNode.docs = docs + + trace.outof() + return + + def parsePlainTextInput(self, packageTreeNode): + trace.into('HappyDoc', 'parsePlainTextInput', + packageTreeNode=packageTreeNode, + ) # ! # Derive the filename for this module. # ! node_path = packageTreeNode.getPath(1) ! filename = apply(os.path.join, node_path) ! trace.writeVar(filename=filename) + self.statusMessage('Importing preformatted file: %s' % filename) + + f = open(filename, 'rt') + body = f.read() + f.close() + + packageTreeNode.preformatted_text = body + + trace.outof() return ! def parseInputCB(self, packageTreeNode): ! trace.into('HappyDoc', 'parseInputCB', ! packageTreeNode=packageTreeNode, ! ) ! ! node_name = packageTreeNode.getName() ! ! extension = os.path.splitext(node_name)[1] ! ! if extension == '.py': ! # ! # Filename ends in .py, so it is a Python file. ! # ! self.parsePythonInput(packageTreeNode) ! ! elif extension in ('.txt', '.stx'): ! # ! # Filename ends in .txt or .stx so it is ! # a text file. ! # ! self.parsePlainTextInput(packageTreeNode) ! ! elif packageTreeNode.values(): ! # ! # Directory node. ! # ! pass ! ! elif not packageTreeNode.values(): ! # ! # Leaf node we are skipping. ! # ! node_path = packageTreeNode.getPath() ! filename = apply(os.path.join, node_path) ! self.statusMessage('Skipping: %s' % filename) ! ! trace.outof() ! return ! ! def parseInputs(self, scanner): package_trees = scanner.getPackageTrees() for package_tree in package_trees: ! package_tree.walk(self.parseInputCB) return ! ! def writeOutputsCB(self, packageTreeNode): ! trace.into('HappyDoc', 'writeOutputsCB', ! packageTreeNode=packageTreeNode, ! ) ! node_name = packageTreeNode.getName() ! node_path = packageTreeNode.getPath() ! canonical_path = packageTreeNode.getPath(1) ! filename = apply(os.path.join, node_path) ! canonical_filename = apply(os.path.join, canonical_path) ! ! extension = os.path.splitext(node_name)[1] ! if extension == '.py': ! # ! # Filename ends in .py, so it is a Python file. ! # ! self.statusMessage('Documenting: "%s"\n to: "%s"' % ( ! canonical_filename, ! 'unknown', ! )) ! ! elif extension in ('.txt', '.stx'): ! # ! # Filename ends in .txt or .stx so it is ! # a text file. ! # ! self.statusMessage('Translating: "%s"\n to: "%s"' % ( ! canonical_filename, ! 'unknown', ! )) ! ! elif packageTreeNode.values(): ! # ! # Directory node. ! # ! pass ! ! elif not packageTreeNode.values(): ! # ! # Leaf node we are skipping. ! # ! pass ! trace.outof() ! return + def writeOutputs(self, scanner): + package_trees = scanner.getPackageTrees() + + for package_tree in package_trees: + package_tree.walk(self.writeOutputsCB) + + return + + def getParameterGroupsFromArguments(self, args): # # Set default parser params *************** *** 410,413 **** --- 508,575 ---- for p, v in formatter_params.items(): self.statusMessage('DEBUG: \t%s:%s' % (p,v), 4) + + return (args, parser_params, docset_params, formatter_params) + + def main(self, *args): + + self.statusMessage('%s version %s' % (self._app_name, + self._app_version)) + + parsed_args = self.getParameterGroupsFromArguments(args) + (args, parser_params, docset_params, formatter_params) = parsed_args + + self.parser_params = parser_params + + # + # Get the list of modules to input + # + if not args: + # + # No files specified, print a help message and exit. + # + self.showHelp('Specify input file(s) to be processed.') + raise self.HelpRequested, 'No input file(s) specified.' + else: + input_modules = [] + for input_module_name in args: + normcase = os.path.normcase(input_module_name) + if not normcase: + continue + while normcase[-1] == os.sep: + normcase = normcase[:-1] + input_modules.append(normcase) + + + # + # Create the scanner, and get the package trees. + # + scanner = self.scanForInput(input_modules) + + # + # Parse the input files + # + self.parseInputs(scanner) + + # + # Generate some output + # + self.writeOutputs(scanner) + + return + + def old_main(self, *args): + + self.statusMessage('%s version %s' % (self._app_name, + self._app_version)) + + # + # Debug info about where the docsets and formatters come from + # + self.statusMessage('Docstring converters from %s' % \ + happydoclib.docstring.__path__[0], 1) + self.statusMessage('Docsets list from %s' % \ + happydoclib.docset.__path__[0], 1) + self.statusMessage('Formatters from %s' % \ + happydoclib.formatter.__path__[0], 1) # |