34
34
return os.path.join(root_dir, path)
36
def unmake_path(path):
37
"""Given a path relative to the site root, makes the path relative to the
38
IVLE root by removing conf.root_dir if it appears at the beginning. If it
39
does not appear at the beginning, returns path unchanged. Also normalises
41
path = os.path.normpath(path)
42
root = os.path.normpath(root_dir)
44
if path.startswith(root):
45
# +1 to take out the slash as well
46
return path[len(root)+1:]
51
"""Given a path, returns a tuple consisting of the top-level directory in
52
the path, and the rest of the path. Note that both items in the tuple will
53
NOT begin with a slash, regardless of whether the original path did. Also
56
Always returns a pair of strings, except for one special case, in which
57
the path is completely empty (or just a single slash). In this case the
58
return value will be (None, ''). But still always returns a pair.
66
>>> split_path("home")
68
>>> split_path("home/docs/files")
69
('home', 'docs/files')
70
>>> split_path("//home/docs/files")
71
('', 'home/docs/files')
73
path = os.path.normpath(path)
74
# Ignore the opening slash
75
if path.startswith(os.sep):
76
path = path[len(os.sep):]
77
if path == '' or path == '.':
79
splitpath = path.split(os.sep, 1)
80
if len(splitpath) == 1:
81
return (splitpath[0], '')
83
return tuple(splitpath)