comparison mercurial/util.py @ 13228:d18a748d9c33

merge with stable
author Matt Mackall <mpm@selenic.com>
date Sat, 01 Jan 2011 18:42:04 -0600
parents 3eee7b42d17e e3bf16703e26
children 6bf39d88c857
comparison
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: