templater: extract function that parses template string
authorYuya Nishihara <yuya@tcha.org>
Mon, 15 Jun 2015 22:55:34 +0900
changeset 25781 82c918509ef5
parent 25780 8b900b937e1c
child 25782 babd2c93bd99
templater: extract function that parses template string It will be called recursively to parse nested template strings.
mercurial/templater.py
--- a/mercurial/templater.py	Mon Jun 15 23:00:42 2015 +0900
+++ b/mercurial/templater.py	Mon Jun 15 22:55:34 2015 +0900
@@ -127,9 +127,9 @@
         pos += 1
     yield ('end', None, pos)
 
-def compiletemplate(tmpl, context):
+def _parsetemplate(tmpl, start, stop):
     parsed = []
-    pos, stop = 0, len(tmpl)
+    pos = start
     p = parser.parser(elements)
     while pos < stop:
         n = tmpl.find('{', pos, stop)
@@ -148,7 +148,10 @@
 
         parseres, pos = p.parse(tokenize(tmpl, n + 1, stop))
         parsed.append(parseres)
+    return parsed, pos
 
+def compiletemplate(tmpl, context):
+    parsed, pos = _parsetemplate(tmpl, 0, len(tmpl))
     return [compileexp(e, context, methods) for e in parsed]
 
 def compileexp(exp, context, curmethods):