[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):
|