[Happydoc-checkins] CVS: HappyDoc3/happydoclib scanner.py,1.8,1.9
Brought to you by:
doughellmann,
krlosaqp
From: Doug H. <dou...@us...> - 2002-12-27 18:33:56
|
Update of /cvsroot/happydoc/HappyDoc3/happydoclib In directory sc8-pr-cvs1:/tmp/cvs-serv18590/happydoclib Modified Files: scanner.py Log Message: Added findNodeFromDottedName() method to PackageTree so that one module can find another. This is especially useful when setting up xrefs between imported modules. Index: scanner.py =================================================================== RCS file: /cvsroot/happydoc/HappyDoc3/happydoclib/scanner.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** scanner.py 15 Dec 2002 16:59:52 -0000 1.8 --- scanner.py 27 Dec 2002 18:33:53 -0000 1.9 *************** *** 211,215 **** def getMimeType(self): ! """Returns the mimetype setting for this node. """ trace.into('PackageTreeNode', 'getMimeType', --- 211,215 ---- def getMimeType(self): ! """Returns the (mimetype, encoding) setting for this node. """ trace.into('PackageTreeNode', 'getMimeType', *************** *** 402,405 **** --- 402,462 ---- return relative_path + + def findNodeFromDottedName(self, dottedNodeName, tryParent=1): + """Find the node referenced by the dotted name given. + + The dottedNodeName 'happydoclib.scanner' retuns the node for + this module. If the named node cannot be found, the return + value is None. + """ + trace.into('PackageTree', 'findNodeFromDottedName', + dottedNodeName=dottedNodeName, + ) + + name_parts = dottedNodeName.split('.') + name = name_parts[0] + remainder = '.'.join(name_parts[1:]) + + trace.writeVar(name=name, + remainder=remainder, + ) + + named_node = None + + # + # Is someone looking for us? + # + if (named_node is None): + if (name == self.getName()): + trace.write('Matched ourself') + named_node = self + + if (named_node is None): + trace.write('Checking child') + named_node = self.get(name) + + if (named_node is None): + trace.write('Checking child.py') + named_node = self.get('%s.py' % name) + + if (named_node is None) and tryParent: + # + # Try the parent with the whole name + # + parent = self.getParent() + if parent: + trace.write('Checking parent') + named_node = parent.findNodeFromDottedName(dottedNodeName) + + # + # Do we need to process the remainder of the original name? + # + if named_node and remainder: + trace.write('Recursing') + named_node = named_node.findNodeFromDottedName(remainder, + tryParent=0) + + trace.outof(named_node) + return named_node def addSubNode(self, name): |