main logo
Subject: [dabo-dev] dabo Commit 2311
Author: Ed Leafe
Posted: 2006/09/30 08:41:38
 
View Entire Thread
New Search


dabo Commit
Revision 2311
Date: 2006-09-30 06:41:36 -0700 (Sat, 30 Sep 2006)
Author: ed

Changed:
U trunk/dabo/lib/utils.py

Log:
Added two methods: 'relativePathList()', which returns a list containing the elements of the relative path between two paths (or a single path and the default of os.getcwd()), and 'relativePath()', which does the same thing, but returns a string containing the relativePathList() value joined with os.path.sep. I'm planning on using these to improve pathing throughout Dabo by making every path relative instead of absolute.


Diff:
Modified: trunk/dabo/lib/utils.py
===================================================================
--- trunk/dabo/lib/utils.py 2006-09-30 13:38:10 UTC (rev 2310)
+++ trunk/dabo/lib/utils.py 2006-09-30 13:41:36 UTC (rev 2311)
@@ -128,4 +128,31 @@
ret[kk] = vv
return ret

+
+def relativePathList(toLoc, fromLoc=None):
+ """Given two paths, returns a list that, when joined with
+ os.path.sep, gives the relative path from 'fromLoc' to
+ "toLoc'. If 'fromLoc' is not specified, the current directory
+ is assumed.
+ """
+ if fromLoc is None:
+ fromLoc = os.getcwd()
+ fromList = fromLoc.split(os.path.sep)
+ toList = toLoc.split(os.path.sep)

+ lev = 0
+
+ while (len(fromList) > lev) and (len(toList) > lev) and \
+ (fromList[lev] == toList[lev]):
+ lev += 1
+
+ # 'lev' now contains the first level where they differ
+ fromDiff = fromList[lev:]
+ toDiff = toList[lev:]
+ return [".."] * len(fromDiff) + toDiff
+
+
+def relativePath(toLoc, fromLoc=None):
+ """Given two paths, returns a relative path from fromLoc to toLoc."""
+ return os.path.sep.join(relativePathList(toLoc, fromLoc))
+





 
©2006 Ed Leafe
<-- Prior Message New Search Next Message -->