Skip to content
Snippets Groups Projects
Commit aa51392d authored by Durham Goode's avatar Durham Goode
Browse files

template: add pad function for padding output

Adds a pad template function with the following signature:

pad(text, width, fillchar=' ', right=False)

This uses the standard python ljust and rjust functions to produce a string
that is at least a certain width. This is useful for aligning variable length
strings in log output (like user names or shortest(node) output).
parent 9c6b86dd
No related branches found
No related tags found
No related merge requests found
......@@ -245,6 +245,31 @@
return templatefilters.fill(text, width, initindent, hangindent)
def pad(context, mapping, args):
"""usage: pad(text, width, fillchar=' ', right=False)
"""
if not (2 <= len(args) <= 4):
raise error.ParseError(_("pad() expects two to four arguments"))
width = int(args[1][1])
text = stringify(args[0][0](context, mapping, args[0][1]))
if args[0][0] == runstring:
text = stringify(runtemplate(context, mapping,
compiletemplate(text, context)))
right = False
fillchar = ' '
if len(args) > 2:
fillchar = stringify(args[2][0](context, mapping, args[2][1]))
if len(args) > 3:
right = util.parsebool(args[3][1])
if right:
return text.rjust(width, fillchar)
else:
return text.ljust(width, fillchar)
def get(context, mapping, args):
if len(args) != 2:
# i18n: "get" is a keyword
......@@ -407,6 +432,7 @@
"ifeq": ifeq,
"join": join,
"label": label,
"pad": pad,
"rstdoc": rstdoc,
"shortest": shortest,
"strip": strip,
......
......@@ -1637,3 +1637,17 @@
$ hg log --template '{shortest(node, 10)}\n'
d97c383ae3
f7769ec2ab
Test pad function
$ hg log --template '{pad(rev, 20)} {author|user}\n'
1 test
0 test
$ hg log --template '{pad(rev, 20, " ", True)} {author|user}\n'
1 test
0 test
$ hg log --template '{pad(rev, 20, "-", False)} {author|user}\n'
1------------------- test
0------------------- test
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment