summaryrefslogtreecommitdiff
path: root/sphinx
diff options
context:
space:
mode:
authorFreek Dijkstra <freek@macfreek.nl>2012-04-28 21:03:30 +0200
committerFreek Dijkstra <freek@macfreek.nl>2012-04-28 21:03:30 +0200
commit11c8d7368a158bba50eeb5d85e7be9cc60a310de (patch)
treebf0d96175f5c2bea1420aebfe4ba2db12fecbdea /sphinx
parentfa9b6cd5bba4df4aab327a801147b6b134761dad (diff)
downloadsphinx-11c8d7368a158bba50eeb5d85e7be9cc60a310de.tar.gz
relative_uri patch. Fixes #916.
Diffstat (limited to 'sphinx')
-rw-r--r--sphinx/util/osutil.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/sphinx/util/osutil.py b/sphinx/util/osutil.py
index 5becc37d..131c6b9c 100644
--- a/sphinx/util/osutil.py
+++ b/sphinx/util/osutil.py
@@ -40,12 +40,20 @@ def relative_uri(base, to):
return to
b2 = base.split(SEP)
t2 = to.split(SEP)
- # remove common segments
- for x, y in zip(b2, t2):
+ # remove common segments (except the last segment)
+ for x, y in zip(b2[:-1], t2[:-1]):
if x != y:
break
b2.pop(0)
t2.pop(0)
+ if b2 == t2:
+ # Special case: relative_uri('f/index.html','f/index.html')
+ # returns '', not 'index.html'
+ return ''
+ if len(b2) == 1 and t2 == ['']:
+ # Special case: relative_uri('f/index.html','f/') should
+ # return './', not ''
+ return '.' + SEP
return ('..' + SEP) * (len(b2)-1) + SEP.join(t2)