24 lines
709 B
Python
24 lines
709 B
Python
class RelPathInavlid(Exception):
|
|
"""Raised when the relative path is invalid"""
|
|
pass
|
|
|
|
def resolvePathUNIX(abs, rel):
|
|
newPath = ''
|
|
if rel[0:2] == './':
|
|
newPath = abs + rel[1:]
|
|
elif rel[0:3] == '../':
|
|
absSegs = abs.split("/")
|
|
relSegs = rel.split("/")
|
|
backLevels = sum(x == ".." for x in relSegs)
|
|
if backLevels >= len(absSegs):
|
|
raise RelPathInavlid
|
|
newPathArr = absSegs[1:(backLevels * -1)]
|
|
for relLevel in relSegs:
|
|
if relLevel != '..':
|
|
newPathArr.append(relLevel)
|
|
for lvl in newPathArr:
|
|
newPath = newPath + '/' + lvl
|
|
else:
|
|
raise RelPathInavlid
|
|
|
|
return newPath |