# HG changeset patch # User Yuya Nishihara # Date 1434376534 -32400 # Node ID 82c918509ef5860496c6d1f3f0d7dd0f7e65024c # Parent 8b900b937e1c11b2018350da4b41054444422765 templater: extract function that parses template string It will be called recursively to parse nested template strings. diff -r 8b900b937e1c -r 82c918509ef5 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):