Mercurial > hg
changeset 25489:ef8956aa8755
templater: introduce indent function
author | Ryan McElroy <rmcelroy@fb.com> |
---|---|
date | Sat, 04 Apr 2015 01:03:52 -0700 |
parents | 89ce95f907bd |
children | ad14fb602e5e |
files | mercurial/templater.py tests/test-command-template.t |
diffstat | 2 files changed, 39 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/templater.py Sun Jun 07 17:14:17 2015 -0700 +++ b/mercurial/templater.py Sat Apr 04 01:03:52 2015 -0700 @@ -327,6 +327,26 @@ else: return text.ljust(width, fillchar) +def indent(context, mapping, args): + """:indent(text, indentchars[, firstline]): Indents all non-empty lines + with the characters given in the indentchars string. An optional + third parameter will override the indent for the first line only + if present.""" + if not (2 <= len(args) <= 3): + # i18n: "indent" is a keyword + raise error.ParseError(_("indent() expects two or three arguments")) + + text = stringify(args[0][0](context, mapping, args[0][1])) + indent = stringify(args[1][0](context, mapping, args[1][1])) + + if len(args) == 3: + firstline = stringify(args[2][0](context, mapping, args[2][1])) + else: + firstline = indent + + # the indent function doesn't indent the first line, so we do it here + return templatefilters.indent(firstline + text, indent) + def get(context, mapping, args): """:get(dict, key): Get an attribute/key from an object. Some keywords are complex types. This function allows you to obtain the value of an @@ -607,6 +627,7 @@ "if": if_, "ifcontains": ifcontains, "ifeq": ifeq, + "indent": indent, "join": join, "label": label, "pad": pad,
--- a/tests/test-command-template.t Sun Jun 07 17:14:17 2015 -0700 +++ b/tests/test-command-template.t Sat Apr 04 01:03:52 2015 -0700 @@ -3252,3 +3252,21 @@ $ hg log -Gv -R a --template "{word('a', desc)}" hg: parse error: word expects an integer index [255] + +Test indent and not adding to empty lines + + $ hg log -T "-----\n{indent(desc, '>> ', ' > ')}\n" -r 0:1 -R a + ----- + > line 1 + >> line 2 + ----- + > other 1 + >> other 2 + + >> other 3 + +Test with non-strings like dates + + $ hg log -T "{indent(date, ' ')}\n" -r 2:3 -R a + 1200000.00 + 1300000.00