class Bundler::URI::Generic

def route_from_path(src, dst)

:stopdoc:
def route_from_path(src, dst)
  case dst
  when src
    # RFC2396, Section 4.2
    return ''
  when %r{(?:\A|/)\.\.?(?:/|\z)}
    # dst has abnormal absolute path,
    # like "/./", "/../", "/x/../", ...
    return dst.dup
  end
  src_path = src.scan(%r{[^/]*/})
  dst_path = dst.scan(%r{[^/]*/?})
  # discard same parts
  while !dst_path.empty? && dst_path.first == src_path.first
    src_path.shift
    dst_path.shift
  end
  tmp = dst_path.join
  # calculate
  if src_path.empty?
    if tmp.empty?
      return './'
    elsif dst_path.first.include?(':') # (see RFC2396 Section 5)
      return './' + tmp
    else
      return tmp
    end
  end
  return '../' * src_path.size + tmp
end