Mercurial > public > mercurial-scm > hg-stable
diff mercurial/templateutil.py @ 37165:0fb28899e81a
templater: factor out unwrapastype() from evalastype()
So ParseError of unwrapastype() can be caught reliably.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 23 Mar 2018 20:43:55 +0900 |
parents | 9ab3491f84c2 |
children | 54355c243042 |
line wrap: on
line diff
--- a/mercurial/templateutil.py Fri Mar 23 20:34:12 2018 +0900 +++ b/mercurial/templateutil.py Fri Mar 23 20:43:55 2018 +0900 @@ -77,7 +77,8 @@ - "{manifest.rev}" Unlike a hybrid, this does not simulate the behavior of the underling - value. Use unwrapvalue() or unwraphybrid() to obtain the inner object. + value. Use unwrapvalue(), unwrapastype(), or unwraphybrid() to obtain + the inner object. """ def __init__(self, gen, key, value, makemap): @@ -340,18 +341,18 @@ thing = func(context, mapping, data) return stringify(thing) -_evalfuncbytype = { - bytes: evalstring, - int: evalinteger, +_unwrapfuncbytype = { + bytes: stringify, + int: unwrapinteger, } -def evalastype(context, mapping, arg, typ): - """Evaluate given argument and coerce its type""" +def unwrapastype(thing, typ): + """Move the inner value object out of the wrapper and coerce its type""" try: - f = _evalfuncbytype[typ] + f = _unwrapfuncbytype[typ] except KeyError: raise error.ProgrammingError('invalid type specified: %r' % typ) - return f(context, mapping, arg) + return f(thing) def runinteger(context, mapping, data): return int(data)