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: |