mercurial/util.py
changeset 13228 d18a748d9c33
parent 13213 3eee7b42d17e
parent 13225 e3bf16703e26
child 13235 6bf39d88c857
equal deleted inserted replaced
13218:1f4721de2ca9 13228:d18a748d9c33
  1242     r = author.find('>')
  1242     r = author.find('>')
  1243     if r == -1:
  1243     if r == -1:
  1244         r = None
  1244         r = None
  1245     return author[author.find('<') + 1:r]
  1245     return author[author.find('<') + 1:r]
  1246 
  1246 
       
  1247 def _ellipsis(text, maxlength):
       
  1248     if len(text) <= maxlength:
       
  1249         return text, False
       
  1250     else:
       
  1251         return "%s..." % (text[:maxlength - 3]), True
       
  1252 
  1247 def ellipsis(text, maxlength=400):
  1253 def ellipsis(text, maxlength=400):
  1248     """Trim string to at most maxlength (default: 400) characters."""
  1254     """Trim string to at most maxlength (default: 400) characters."""
  1249     if len(text) <= maxlength:
  1255     try:
  1250         return text
  1256         # use unicode not to split at intermediate multi-byte sequence
  1251     else:
  1257         utext, truncated = _ellipsis(text.decode(encoding.encoding),
  1252         return "%s..." % (text[:maxlength - 3])
  1258                                      maxlength)
       
  1259         if not truncated:
       
  1260             return text
       
  1261         return utext.encode(encoding.encoding)
       
  1262     except (UnicodeDecodeError, UnicodeEncodeError):
       
  1263         return _ellipsis(text, maxlength)[0]
  1253 
  1264 
  1254 def walkrepos(path, followsym=False, seen_dirs=None, recurse=False):
  1265 def walkrepos(path, followsym=False, seen_dirs=None, recurse=False):
  1255     '''yield every hg repository under path, recursively.'''
  1266     '''yield every hg repository under path, recursively.'''
  1256     def errhandler(err):
  1267     def errhandler(err):
  1257         if err.filename == path:
  1268         if err.filename == path: