Mercurial > public > mercurial-scm > hg-stable
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 |