mercurial/store.py
changeset 38783 e7aa113b14f7
parent 38696 89d93dd1a222
child 38872 576eef1ab43d
equal deleted inserted replaced
38782:7eba8f83129b 38783:e7aa113b14f7
   116     for k, v in cmap.iteritems():
   116     for k, v in cmap.iteritems():
   117         dmap[v] = k
   117         dmap[v] = k
   118     def decode(s):
   118     def decode(s):
   119         i = 0
   119         i = 0
   120         while i < len(s):
   120         while i < len(s):
   121             for l in xrange(1, 4):
   121             for l in pycompat.xrange(1, 4):
   122                 try:
   122                 try:
   123                     yield dmap[s[i:i + l]]
   123                     yield dmap[s[i:i + l]]
   124                     i += l
   124                     i += l
   125                     break
   125                     break
   126                 except KeyError:
   126                 except KeyError:
   127                     pass
   127                     pass
   128             else:
   128             else:
   129                 raise KeyError
   129                 raise KeyError
   130     return (lambda s: ''.join([cmap[s[c:c + 1]] for c in xrange(len(s))]),
   130     return (lambda s: ''.join([cmap[s[c:c + 1]]
       
   131                                for c in pycompat.xrange(len(s))]),
   131             lambda s: ''.join(list(decode(s))))
   132             lambda s: ''.join(list(decode(s))))
   132 
   133 
   133 _encodefname, _decodefname = _buildencodefun()
   134 _encodefname, _decodefname = _buildencodefun()
   134 
   135 
   135 def encodefilename(s):
   136 def encodefilename(s):
   157     'hello~3aworld~3f'
   158     'hello~3aworld~3f'
   158     >>> f(b'the\\x07quick\\xADshot')
   159     >>> f(b'the\\x07quick\\xADshot')
   159     'the~07quick~adshot'
   160     'the~07quick~adshot'
   160     '''
   161     '''
   161     xchr = pycompat.bytechr
   162     xchr = pycompat.bytechr
   162     cmap = dict([(xchr(x), xchr(x)) for x in xrange(127)])
   163     cmap = dict([(xchr(x), xchr(x)) for x in pycompat.xrange(127)])
   163     for x in _reserved():
   164     for x in _reserved():
   164         cmap[xchr(x)] = "~%02x" % x
   165         cmap[xchr(x)] = "~%02x" % x
   165     for x in range(ord("A"), ord("Z") + 1):
   166     for x in range(ord("A"), ord("Z") + 1):
   166         cmap[xchr(x)] = xchr(x).lower()
   167         cmap[xchr(x)] = xchr(x).lower()
   167     def lowerencode(s):
   168     def lowerencode(s):