1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/uri/generic.rb (URI::Generic#merge_path):

"URI('http://www.example.com/foo/..') + './'" should return
  "URI('http://www.example.com/')".  [ruby-list:39838]
  "URI('http://www.example.com/') + './foo/bar/..'" should return
  "URI('http://www.example.com/foo/')".  [ruby-list:39844]

* test/uri/test_generic.rb (TestGeneric#test_merge): added tests.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akira 2004-07-13 10:50:26 +00:00
parent db850b21fd
commit f461a6b8e5
3 changed files with 47 additions and 6 deletions

View file

@ -630,16 +630,20 @@ module URI
base_path = split_path(base)
rel_path = split_path(rel)
# RFC2396, Section 5.2, 6), a)
base_path << '' if base_path.last == '..'
while i = base_path.index('..')
base_path.slice!(i - 1, 2)
end
if base_path.empty?
base_path = [''] # XXX
base_path = [''] # keep '/' for root directory
else
base_path.pop
end
# RFC2396, Section 5.2, 6), a)
base_path.pop unless base_path.size == 1
# RFC2396, Section 5.2, 6), c)
# RFC2396, Section 5.2, 6), d)
rel_path.push('') if rel_path.last == '.'
# RFC2396, Section 5.2, 6), d)
rel_path.push('') if rel_path.last == '.' || rel_path.last == '..'
rel_path.delete('.')
# RFC2396, Section 5.2, 6), e)