[PATCH V4] templater: introduce indent function
Ryan McElroy
rm at fb.com
Fri Jun 5 19:06:32 CDT 2015
On 6/5/2015 4:19 PM, Ryan McElroy wrote:
> # HG changeset patch
> # User Ryan McElroy <rmcelroy at fb.com>
> # Date 1428134632 25200
> # Sat Apr 04 01:03:52 2015 -0700
> # Node ID 0828786502560d44090cad0696f24f3eb89af043
> # Parent c39640d26a4c7546faef00b9e5c02af45ab8bf5e
> templater: introduce indent function
>
> diff --git a/mercurial/templater.py b/mercurial/templater.py
> --- a/mercurial/templater.py
> +++ b/mercurial/templater.py
> @@ -327,6 +327,27 @@ def pad(context, mapping, args):
> else:
> return text.ljust(width, fillchar)
>
> +def indent(context, mapping, args):
> + """
> + :indent(text, indentchars): Indents all non-empty lines with the
I need to update the help message. V5 will come.
> + characters given in the indentchars string.
> + Example: indent('hello\\n\\nworld', ' ') == " hello\\n\\n world"
> + """
> + if 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 +628,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
> @@ -3252,3 +3252,17 @@ Test word for invalid numbers
> $ hg log -Gv -R a --template "{word('a', desc)}"
> hg: parse error: word expects an integer index
> [255]
> +
> +Test indent
> +
> + $ hg log -T "{indent(desc, ' ', ' ')}\n" -r 0:1 -R a
> + line 1
> + line 2
> + other 1
> + other 2
> +
> + other 3
> +
> + $ hg log -T "{indent(date, ' ')}\n" -r 2:3 -R a
> + 1200000.00
> + 1300000.00
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list