changeset 28546:1987ed32efca

templater: relax type of mapped template Now compiled template fragments are packed into a generic type, (func, data), a string can be a valid template. This change allows us to unwrap a trivial string node. See the next patch for details.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 14 Feb 2016 15:42:49 +0900
parents 1d461ee26e1b
children 73d01cba5810
files mercurial/templater.py tests/test-command-template.t
diffstat 2 files changed, 3 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/templater.py	Sat Feb 13 23:54:24 2016 +0900
+++ b/mercurial/templater.py	Sun Feb 14 15:42:49 2016 +0900
@@ -210,7 +210,7 @@
 def gettemplate(exp, context):
     """Compile given template tree or load named template from map file;
     returns (func, data) pair"""
-    if exp[0] == 'template':
+    if exp[0] in ('template', 'string'):
         return compileexp(exp, context, methods)
     if exp[0] == 'symbol':
         # unlike runsymbol(), here 'symbol' is always taken as template name
--- a/tests/test-command-template.t	Sat Feb 13 23:54:24 2016 +0900
+++ b/tests/test-command-template.t	Sun Feb 14 15:42:49 2016 +0900
@@ -2900,12 +2900,8 @@
   template: 0
   $ hg log -Ra -r0 -T '{r"rawstring: {rev}"}\n'
   rawstring: {rev}
-
-because map operation requires template, raw string can't be used
-
-  $ hg log -Ra -r0 -T '{files % r"rawstring"}\n'
-  hg: parse error: expected template specifier
-  [255]
+  $ hg log -Ra -r0 -T '{files % r"rawstring: {file}"}\n'
+  rawstring: {file}
 
 Test string escaping: