mercurial/url.py
changeset 13848 b2798c1defff
parent 13827 f1823b9f073b
child 13902 fab10e7cacd6
--- a/mercurial/url.py	Fri Apr 01 11:45:29 2011 -0500
+++ b/mercurial/url.py	Thu Mar 31 17:37:33 2011 -0700
@@ -7,7 +7,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-import urllib, urllib2, httplib, os, socket, cStringIO
+import urllib, urllib2, httplib, os, socket, cStringIO, re
 import __builtin__
 from i18n import _
 import keepalive, util
@@ -64,6 +64,7 @@
 
     _safechars = "!~*'()+"
     _safepchars = "/!~*'()+"
+    _matchscheme = re.compile(r'^[a-zA-Z0-9+.\-]+:').match
 
     def __init__(self, path, parsequery=True, parsefragment=True):
         # We slowly chomp away at path until we have only the path left
@@ -88,7 +89,7 @@
             self.path = path
             return
 
-        if not path.startswith('/') and ':' in path:
+        if self._matchscheme(path):
             parts = path.split(':', 1)
             if parts[0]:
                 self.scheme, path = parts