mercurial/util.py
changeset 21907 7e5dfa00e3c2
parent 21857 86c2d792a4b7
child 21908 cad9dadc9d26
equal deleted inserted replaced
21906:08dcb572a456 21907:7e5dfa00e3c2
    13 hide platform-specific details from the core.
    13 hide platform-specific details from the core.
    14 """
    14 """
    15 
    15 
    16 from i18n import _
    16 from i18n import _
    17 import error, osutil, encoding
    17 import error, osutil, encoding
    18 import errno, re, shutil, sys, tempfile, traceback
    18 import errno, shutil, sys, tempfile, traceback
       
    19 import re as remod
    19 import os, time, datetime, calendar, textwrap, signal, collections
    20 import os, time, datetime, calendar, textwrap, signal, collections
    20 import imp, socket, urllib
    21 import imp, socket, urllib
    21 
    22 
    22 if os.name == 'nt':
    23 if os.name == 'nt':
    23     import windows as platform
    24     import windows as platform
   726         try:
   727         try:
   727             # check if match works, see issue3964
   728             # check if match works, see issue3964
   728             _re2 = bool(re2.match(r'\[([^\[]+)\]', '[ui]'))
   729             _re2 = bool(re2.match(r'\[([^\[]+)\]', '[ui]'))
   729         except ImportError:
   730         except ImportError:
   730             _re2 = False
   731             _re2 = False
   731     if _re2 and (flags & ~(re.IGNORECASE | re.MULTILINE)) == 0:
   732     if _re2 and (flags & ~(remod.IGNORECASE | remod.MULTILINE)) == 0:
   732         if flags & re.IGNORECASE:
   733         if flags & remod.IGNORECASE:
   733             pat = '(?i)' + pat
   734             pat = '(?i)' + pat
   734         if flags & re.MULTILINE:
   735         if flags & remod.MULTILINE:
   735             pat = '(?m)' + pat
   736             pat = '(?m)' + pat
   736         try:
   737         try:
   737             return re2.compile(pat)
   738             return re2.compile(pat)
   738         except re2.error:
   739         except re2.error:
   739             pass
   740             pass
   740     return re.compile(pat, flags)
   741     return remod.compile(pat, flags)
   741 
   742 
   742 _fspathcache = {}
   743 _fspathcache = {}
   743 def fspath(name, root):
   744 def fspath(name, root):
   744     '''Get name in the case stored in the filesystem
   745     '''Get name in the case stored in the filesystem
   745 
   746 
   759     seps = os.sep
   760     seps = os.sep
   760     if os.altsep:
   761     if os.altsep:
   761         seps = seps + os.altsep
   762         seps = seps + os.altsep
   762     # Protect backslashes. This gets silly very quickly.
   763     # Protect backslashes. This gets silly very quickly.
   763     seps.replace('\\','\\\\')
   764     seps.replace('\\','\\\\')
   764     pattern = re.compile(r'([^%s]+)|([%s]+)' % (seps, seps))
   765     pattern = remod.compile(r'([^%s]+)|([%s]+)' % (seps, seps))
   765     dir = os.path.normpath(root)
   766     dir = os.path.normpath(root)
   766     result = []
   767     result = []
   767     for part, sep in pattern.findall(name):
   768     for part, sep in pattern.findall(name):
   768         if sep:
   769         if sep:
   769             result.append(sep)
   770             result.append(sep)
  1563         if len(prefix) > 1:
  1564         if len(prefix) > 1:
  1564             prefix_char = prefix[1:]
  1565             prefix_char = prefix[1:]
  1565         else:
  1566         else:
  1566             prefix_char = prefix
  1567             prefix_char = prefix
  1567         mapping[prefix_char] = prefix_char
  1568         mapping[prefix_char] = prefix_char
  1568     r = re.compile(r'%s(%s)' % (prefix, patterns))
  1569     r = remod.compile(r'%s(%s)' % (prefix, patterns))
  1569     return r.sub(lambda x: fn(mapping[x.group()[1:]]), s)
  1570     return r.sub(lambda x: fn(mapping[x.group()[1:]]), s)
  1570 
  1571 
  1571 def getport(port):
  1572 def getport(port):
  1572     """Return the port for a given network service.
  1573     """Return the port for a given network service.
  1573 
  1574 
  1678     <url scheme: 'http', host: 'host', path: 'a?b#c'>
  1679     <url scheme: 'http', host: 'host', path: 'a?b#c'>
  1679     """
  1680     """
  1680 
  1681 
  1681     _safechars = "!~*'()+"
  1682     _safechars = "!~*'()+"
  1682     _safepchars = "/!~*'()+:\\"
  1683     _safepchars = "/!~*'()+:\\"
  1683     _matchscheme = re.compile(r'^[a-zA-Z0-9+.\-]+:').match
  1684     _matchscheme = remod.compile(r'^[a-zA-Z0-9+.\-]+:').match
  1684 
  1685 
  1685     def __init__(self, path, parsequery=True, parsefragment=True):
  1686     def __init__(self, path, parsequery=True, parsefragment=True):
  1686         # We slowly chomp away at path until we have only the path left
  1687         # We slowly chomp away at path until we have only the path left
  1687         self.scheme = self.user = self.passwd = self.host = None
  1688         self.scheme = self.user = self.passwd = self.host = None
  1688         self.port = self.path = self.query = self.fragment = None
  1689         self.port = self.path = self.query = self.fragment = None