mercurial/util.py
changeset 30036 3f4e1c033f40
parent 30031 0f6d6fdd3c2a
child 30038 42ead5b3aa7b
equal deleted inserted replaced
30035:02328b5d775d 30036:3f4e1c033f40
  2375 
  2375 
  2376     >>> url('http://host/a?b#c')
  2376     >>> url('http://host/a?b#c')
  2377     <url scheme: 'http', host: 'host', path: 'a', query: 'b', fragment: 'c'>
  2377     <url scheme: 'http', host: 'host', path: 'a', query: 'b', fragment: 'c'>
  2378     >>> url('http://host/a?b#c', parsequery=False, parsefragment=False)
  2378     >>> url('http://host/a?b#c', parsequery=False, parsefragment=False)
  2379     <url scheme: 'http', host: 'host', path: 'a?b#c'>
  2379     <url scheme: 'http', host: 'host', path: 'a?b#c'>
       
  2380 
       
  2381     Empty path:
       
  2382 
       
  2383     >>> url('')
       
  2384     <url path: ''>
       
  2385     >>> url('#a')
       
  2386     <url path: '', fragment: 'a'>
       
  2387     >>> url('http://host/')
       
  2388     <url scheme: 'http', host: 'host', path: ''>
       
  2389     >>> url('http://host/#a')
       
  2390     <url scheme: 'http', host: 'host', path: '', fragment: 'a'>
       
  2391 
       
  2392     Only scheme:
       
  2393 
       
  2394     >>> url('http:')
       
  2395     <url scheme: 'http'>
  2380     """
  2396     """
  2381 
  2397 
  2382     _safechars = "!~*'()+"
  2398     _safechars = "!~*'()+"
  2383     _safepchars = "/!~*'()+:\\"
  2399     _safepchars = "/!~*'()+:\\"
  2384     _matchscheme = remod.compile(r'^[a-zA-Z0-9+.\-]+:').match
  2400     _matchscheme = remod.compile(r'^[a-zA-Z0-9+.\-]+:').match
  2391         self._hostport = ''
  2407         self._hostport = ''
  2392         self._origpath = path
  2408         self._origpath = path
  2393 
  2409 
  2394         if parsefragment and '#' in path:
  2410         if parsefragment and '#' in path:
  2395             path, self.fragment = path.split('#', 1)
  2411             path, self.fragment = path.split('#', 1)
  2396             if not path:
       
  2397                 path = None
       
  2398 
  2412 
  2399         # special case for Windows drive letters and UNC paths
  2413         # special case for Windows drive letters and UNC paths
  2400         if hasdriveletter(path) or path.startswith(r'\\'):
  2414         if hasdriveletter(path) or path.startswith(r'\\'):
  2401             self.path = path
  2415             self.path = path
  2402             return
  2416             return