mercurial/templatefuncs.py
changeset 40189 9458dbfa7f33
parent 39367 83f8f7b9fa60
child 40518 d11e2c5b287e
equal deleted inserted replaced
40188:2c5316796f45 40189:9458dbfa7f33
   214         data = repo.wvfs.tryread('.mailmap')
   214         data = repo.wvfs.tryread('.mailmap')
   215         cache['mailmap'] = stringutil.parsemailmap(data)
   215         cache['mailmap'] = stringutil.parsemailmap(data)
   216 
   216 
   217     return stringutil.mapname(cache['mailmap'], author)
   217     return stringutil.mapname(cache['mailmap'], author)
   218 
   218 
   219 @templatefunc('pad(text, width[, fillchar=\' \'[, left=False]])',
   219 @templatefunc(
   220               argspec='text width fillchar left')
   220     'pad(text, width[, fillchar=\' \'[, left=False[, truncate=False]]])',
       
   221     argspec='text width fillchar left truncate')
   221 def pad(context, mapping, args):
   222 def pad(context, mapping, args):
   222     """Pad text with a
   223     """Pad text with a
   223     fill character."""
   224     fill character."""
   224     if 'text' not in args or 'width' not in args:
   225     if 'text' not in args or 'width' not in args:
   225         # i18n: "pad" is a keyword
   226         # i18n: "pad" is a keyword
   229                         # i18n: "pad" is a keyword
   230                         # i18n: "pad" is a keyword
   230                         _("pad() expects an integer width"))
   231                         _("pad() expects an integer width"))
   231 
   232 
   232     text = evalstring(context, mapping, args['text'])
   233     text = evalstring(context, mapping, args['text'])
   233 
   234 
       
   235     truncate = False
   234     left = False
   236     left = False
   235     fillchar = ' '
   237     fillchar = ' '
   236     if 'fillchar' in args:
   238     if 'fillchar' in args:
   237         fillchar = evalstring(context, mapping, args['fillchar'])
   239         fillchar = evalstring(context, mapping, args['fillchar'])
   238         if len(color.stripeffects(fillchar)) != 1:
   240         if len(color.stripeffects(fillchar)) != 1:
   239             # i18n: "pad" is a keyword
   241             # i18n: "pad" is a keyword
   240             raise error.ParseError(_("pad() expects a single fill character"))
   242             raise error.ParseError(_("pad() expects a single fill character"))
   241     if 'left' in args:
   243     if 'left' in args:
   242         left = evalboolean(context, mapping, args['left'])
   244         left = evalboolean(context, mapping, args['left'])
       
   245     if 'truncate' in args:
       
   246         truncate = evalboolean(context, mapping, args['truncate'])
   243 
   247 
   244     fillwidth = width - encoding.colwidth(color.stripeffects(text))
   248     fillwidth = width - encoding.colwidth(color.stripeffects(text))
       
   249     if fillwidth < 0 and truncate:
       
   250         return encoding.trim(color.stripeffects(text), width, leftside=left)
   245     if fillwidth <= 0:
   251     if fillwidth <= 0:
   246         return text
   252         return text
   247     if left:
   253     if left:
   248         return fillchar * fillwidth + text
   254         return fillchar * fillwidth + text
   249     else:
   255     else: