comparison mercurial/templateutil.py @ 38253:ad06a4264daf

templater: add try-except stub to runmember() New wrapped interface will raise ParseError if the underlying object doesn't support dict-like lookup operation.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 21 Apr 2018 17:43:16 +0900
parents c2456a7726c1
children 12b6ee9e88f3
comparison
equal deleted inserted replaced
38252:c2456a7726c1 38253:ad06a4264daf
664 darg, memb = data 664 darg, memb = data
665 d = evalwrapped(context, mapping, darg) 665 d = evalwrapped(context, mapping, darg)
666 if util.safehasattr(d, 'tomap'): 666 if util.safehasattr(d, 'tomap'):
667 lm = context.overlaymap(mapping, d.tomap()) 667 lm = context.overlaymap(mapping, d.tomap())
668 return runsymbol(context, lm, memb) 668 return runsymbol(context, lm, memb)
669 if util.safehasattr(d, 'get'): 669 try:
670 return getdictitem(d, memb) 670 if util.safehasattr(d, 'get'):
671 671 return getdictitem(d, memb)
672 sym = findsymbolicname(darg) 672 raise error.ParseError
673 if sym: 673 except error.ParseError:
674 raise error.ParseError(_("keyword '%s' has no member") % sym) 674 sym = findsymbolicname(darg)
675 else: 675 if sym:
676 raise error.ParseError(_("%r has no member") % pycompat.bytestr(d)) 676 raise error.ParseError(_("keyword '%s' has no member") % sym)
677 else:
678 raise error.ParseError(_("%r has no member") % pycompat.bytestr(d))
677 679
678 def runnegate(context, mapping, data): 680 def runnegate(context, mapping, data):
679 data = evalinteger(context, mapping, data, 681 data = evalinteger(context, mapping, data,
680 _('negation needs an integer argument')) 682 _('negation needs an integer argument'))
681 return -data 683 return -data