Mercurial > public > mercurial-scm > hg-stable
diff mercurial/templater.py @ 25489:ef8956aa8755
templater: introduce indent function
author | Ryan McElroy <rmcelroy@fb.com> |
---|---|
date | Sat, 04 Apr 2015 01:03:52 -0700 |
parents | 081b08e4ea13 |
children | ad14fb602e5e |
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,