[PATCH] templater: introduce indent function
Ryan McElroy
rmcelroy at fb.com
Sat Apr 4 08:19:52 UTC 2015
# HG changeset patch
# User Ryan McElroy <rmcelroy at fb.com>
# Date 1428134632 25200
# Sat Apr 04 01:03:52 2015 -0700
# Node ID e2af17e4887916089a49b2d3331a725c840fbce6
# Parent 4a4018831d2ebc3c9cae9c6613e6a2497b4f0993
templater: introduce indent function
diff --git a/mercurial/templater.py b/mercurial/templater.py
--- a/mercurial/templater.py
+++ b/mercurial/templater.py
@@ -301,6 +301,20 @@ def pad(context, mapping, args):
else:
return text.ljust(width, fillchar)
+def indent(context, mapping, args):
+ """:indent(text, indentchars): Indents all non-empty lines except the first
+ with the characters given in the indentchars string.
+ Example: indent('hello\\nworld', ' ') == "hello\\n world"
+ """
+ if len(args) != 2:
+ # i18n: "indent" is a keyword
+ raise error.ParseError(_("indent() expects two arguments"))
+
+ text = args[0][0](context, mapping, args[0][1])
+ indent = args[1][0](context, mapping, args[1][1])
+
+ return templatefilters.indent(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
@@ -571,6 +585,7 @@ funcs = {
"if": if_,
"ifcontains": ifcontains,
"ifeq": ifeq,
+ "indent": indent,
"join": join,
"label": label,
"pad": pad,
diff --git a/tests/test-command-template.t b/tests/test-command-template.t
--- a/tests/test-command-template.t
+++ b/tests/test-command-template.t
@@ -2548,3 +2548,21 @@ Test word error messages for not enough
$ hg log -Gv -R a --template "{word('0', desc, 'o', 'h', 'b', 'o', 'y')}"
hg: parse error: word expects two or three arguments, got 7
[255]
+
+Test indent
+
+ $ hg log -T " {indent(desc, ' ')}\n" -R a
+ future
+ third
+ second
+ merge
+ new head
+ new branch
+ no user, no domain
+ no person
+ other 1
+ other 2
+
+ other 3
+ line 1
+ line 2
More information about the Mercurial-devel
mailing list