Skip to content
Snippets Groups Projects
Commit a54c0d83 authored by Katsunori FUJIWARA's avatar Katsunori FUJIWARA
Browse files

templater: apply "stringify()" on sub expression to get string correctly

Templating syntax allows nested expression to be specified as parts
below, but they are evaluated as a generator and don't work correctly.

  - 'sep' of 'join(list, sep)'
  - 'text' and 'chars' of 'strip(text, chars)'

In the former case, 'sep' returns expected string only for the first
separation, and empty one for the second or later, because the
generator has only one element.

In the latter case, templating is aborted by exception, because the
generator doesn't have 'strip()' method (as 'text') and can't be
passed as the argument to 'str.strip()' (as 'chars').

This patch applies "stringify()" on these sub expression to get string
correctly.
parent 7e627fe6
No related branches found
No related tags found
No related merge requests found
......@@ -296,7 +296,7 @@
joiner = " "
if len(args) > 1:
joiner = args[1][0](context, mapping, args[1][1])
joiner = stringify(args[1][0](context, mapping, args[1][1]))
first = True
for x in joinset:
......@@ -328,5 +328,5 @@
if not (1 <= len(args) <= 2):
raise error.ParseError(_("strip expects one or two arguments"))
text = args[0][0](context, mapping, args[0][1])
text = stringify(args[0][0](context, mapping, args[0][1]))
if len(args) == 2:
......@@ -332,5 +332,5 @@
if len(args) == 2:
chars = args[1][0](context, mapping, args[1][1])
chars = stringify(args[1][0](context, mapping, args[1][1]))
return text.strip(chars)
return text.strip()
......
......@@ -1659,3 +1659,12 @@
$ hg log -r 0 --template '{if(branches, "yes", "no")}\n'
no
$ cd ..
Test stringify on sub expressions
$ hg log -R a -r 8 --template '{join(files, if("1", if("1", ", ")))}\n'
fourth, second, third
$ hg log -R a -r 8 --template '{strip(if("1", if("1", "-abc-")), if("1", if("1", "-")))}\n'
abc
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