Mercurial > hg
comparison mercurial/templatefuncs.py @ 38243:06d11cd90516
templater: promote getmember() to an interface of wrapped types
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 21 Mar 2018 11:30:21 +0900 |
parents | 12b6ee9e88f3 |
children | 688fbb758ba9 |
comparison
equal
deleted
inserted
replaced
38242:12b6ee9e88f3 | 38243:06d11cd90516 |
---|---|
260 if len(args) != 2: | 260 if len(args) != 2: |
261 # i18n: "get" is a keyword | 261 # i18n: "get" is a keyword |
262 raise error.ParseError(_("get() expects two arguments")) | 262 raise error.ParseError(_("get() expects two arguments")) |
263 | 263 |
264 dictarg = evalwrapped(context, mapping, args[0]) | 264 dictarg = evalwrapped(context, mapping, args[0]) |
265 if not util.safehasattr(dictarg, 'getmember'): | 265 key = evalfuncarg(context, mapping, args[1]) |
266 try: | |
267 return dictarg.getmember(context, mapping, key) | |
268 except error.ParseError as err: | |
266 # i18n: "get" is a keyword | 269 # i18n: "get" is a keyword |
267 raise error.ParseError(_("get() expects a dict as first argument")) | 270 hint = _("get() expects a dict as first argument") |
268 | 271 raise error.ParseError(bytes(err), hint=hint) |
269 key = evalfuncarg(context, mapping, args[1]) | |
270 return dictarg.getmember(context, mapping, key) | |
271 | 272 |
272 @templatefunc('if(expr, then[, else])') | 273 @templatefunc('if(expr, then[, else])') |
273 def if_(context, mapping, args): | 274 def if_(context, mapping, args): |
274 """Conditionally execute based on the result of | 275 """Conditionally execute based on the result of |
275 an expression.""" | 276 an expression.""" |