Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/templateutil.py @ 38283:4b0f39e7406e
templater: show slightly better hint on map operation error
It was super hard to find where the templater went wrong if a keyword was
evaluated to '' or None.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 08 Jun 2018 20:57:54 +0900 |
parents | 630c62804383 |
children | 354fad8697fd |
comparison
equal
deleted
inserted
replaced
38282:630c62804383 | 38283:4b0f39e7406e |
---|---|
751 for i, nm in enumerate(newmappings): | 751 for i, nm in enumerate(newmappings): |
752 lm = context.overlaymap(origmapping, nm) | 752 lm = context.overlaymap(origmapping, nm) |
753 lm['index'] = i | 753 lm['index'] = i |
754 yield lm | 754 yield lm |
755 | 755 |
756 def _applymap(context, mapping, d, targ): | 756 def _applymap(context, mapping, d, darg, targ): |
757 for lm in _iteroverlaymaps(context, mapping, d.itermaps(context)): | 757 try: |
758 diter = d.itermaps(context) | |
759 except error.ParseError as err: | |
760 sym = findsymbolicname(darg) | |
761 if not sym: | |
762 raise | |
763 hint = _("keyword '%s' does not support map operation") % sym | |
764 raise error.ParseError(bytes(err), hint=hint) | |
765 for lm in _iteroverlaymaps(context, mapping, diter): | |
758 yield evalrawexp(context, lm, targ) | 766 yield evalrawexp(context, lm, targ) |
759 | 767 |
760 def runmap(context, mapping, data): | 768 def runmap(context, mapping, data): |
761 darg, targ = data | 769 darg, targ = data |
762 d = evalwrapped(context, mapping, darg) | 770 d = evalwrapped(context, mapping, darg) |
763 return mappedgenerator(_applymap, args=(mapping, d, targ)) | 771 return mappedgenerator(_applymap, args=(mapping, d, darg, targ)) |
764 | 772 |
765 def runmember(context, mapping, data): | 773 def runmember(context, mapping, data): |
766 darg, memb = data | 774 darg, memb = data |
767 d = evalwrapped(context, mapping, darg) | 775 d = evalwrapped(context, mapping, darg) |
768 if util.safehasattr(d, 'tomap'): | 776 if util.safehasattr(d, 'tomap'): |