~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/urlutils.py

  • Committer: Wouter van Heyst
  • Date: 2006-06-07 17:23:59 UTC
  • mto: This revision was merged to the branch mainline in revision 1752.
  • Revision ID: larstiq@larstiq.dyndns.org-20060607172359-6023dec74344453d
more code cleanup

Show diffs side-by-side

added added

removed removed

Lines of Context:
138
138
                                base, args)
139
139
                else:
140
140
                    path.append(chunk)
 
141
 
141
142
    if scheme is None:
142
143
        return '/'.join(path)
143
144
    return scheme + '://' + '/'.join(path)
185
186
    """
186
187
    # importing directly from ntpath allows us to test this 
187
188
    # on non-win32 platforms
188
 
    # TODO: jam 20060426 consider moving this import outside of the function
189
189
    win32_path = bzrlib.osutils._nt_normpath(
190
190
        bzrlib.osutils._win32_abspath(path)).replace('\\', '/')
191
191
    return 'file:///' + win32_path[0].upper() + ':' + escape(win32_path[2:])
228
228
    if not m:
229
229
        return local_path_to_url(url)
230
230
    if not isinstance(url, unicode):
231
 
        # TODO: jam 20060510 We need to test for ascii characters that
232
 
        #       shouldn't be allowed in URLs
233
231
        for c in url:
234
232
            if c not in _url_safe_characters:
235
233
                raise errors.InvalidURL(url, 'URLs can only contain specific'
256
254
    if base_first_slash is None:
257
255
        return other
258
256
    
259
 
    # TODO: shorter names
260
257
    dummy, other_first_slash = _find_scheme_and_separator(other)
261
258
    if other_first_slash is None:
262
259
        return other
275
272
 
276
273
    base_sections = base_path.split('/')
277
274
    other_sections = other_path.split('/')
278
 
    # TODO: handle the case where base has a host part but no trailing slash
279
 
    #           that might not be allowed, it only makes sense to have a link
280
 
    #           relative to a directory-ish part, not to files
281
275
 
282
276
    if base_sections == ['']:
283
277
        base_sections = []
369
363
            return url[:-1]
370
364
        else:
371
365
            return url
 
366
 
372
367
    scheme_loc, first_path_slash = _find_scheme_and_separator(url)
373
368
    if scheme_loc is None:
374
369
        # This is a relative path, as it has no scheme
399
394
        url = str(url)
400
395
    except UnicodeError, e:
401
396
        raise errors.InvalidURL(url, 'URL was not a plain ASCII url: %s' % (e,))
 
397
 
402
398
    unquoted = urllib.unquote(url)
403
399
    try:
404
400
        unicode_path = unquoted.decode('utf-8')