File tree Expand file tree Collapse file tree 2 files changed +26
-0
lines changed
Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -72,6 +72,20 @@ def membername(self):
7272 """
7373 return self [1 :]
7474
75+ def relative_ref (self , baseURI ):
76+ """
77+ Return string containing relative reference to package item from
78+ *baseURI*. E.g. PackURI('/ppt/slideLayouts/slideLayout1.xml') would
79+ return '../slideLayouts/slideLayout1.xml' for baseURI '/ppt/slides'.
80+ """
81+ # workaround for posixpath bug in 2.6, doesn't generate correct
82+ # relative path when *start* (second) parameter is root ('/')
83+ if baseURI == '/' :
84+ relpath = self [1 :]
85+ else :
86+ relpath = posixpath .relpath (self , baseURI )
87+ return relpath
88+
7589 @property
7690 def rels_uri (self ):
7791 """
Original file line number Diff line number Diff line change @@ -66,6 +66,18 @@ def it_can_calculate_membername(self):
6666 for pack_uri , expected_membername in self .cases (expected_values ):
6767 assert pack_uri .membername == expected_membername
6868
69+ def it_can_calculate_relative_ref_value (self ):
70+ cases = (
71+ ('/' , '/ppt/presentation.xml' , 'ppt/presentation.xml' ),
72+ ('/ppt' , '/ppt/slideMasters/slideMaster1.xml' ,
73+ 'slideMasters/slideMaster1.xml' ),
74+ ('/ppt/slides' , '/ppt/slideLayouts/slideLayout1.xml' ,
75+ '../slideLayouts/slideLayout1.xml' ),
76+ )
77+ for baseURI , uri_str , expected_relative_ref in cases :
78+ pack_uri = PackURI (uri_str )
79+ assert pack_uri .relative_ref (baseURI ) == expected_relative_ref
80+
6981 def it_can_calculate_rels_uri (self ):
7082 expected_values = (
7183 '/_rels/.rels' ,
You can’t perform that action at this time.
0 commit comments