Mercurial > public > mercurial-scm > hg
comparison mercurial/templater.py @ 34536:4c1cfe54c08d
templater: extend dot operator as a short for get(dict, key)
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 18 Sep 2017 23:07:17 +0900 |
parents | 78590585c0db |
children | ee0d74083a22 |
comparison
equal
deleted
inserted
replaced
34535:78590585c0db | 34536:4c1cfe54c08d |
---|---|
461 d = evalrawexp(context, mapping, darg) | 461 d = evalrawexp(context, mapping, darg) |
462 if util.safehasattr(d, 'tomap'): | 462 if util.safehasattr(d, 'tomap'): |
463 lm = mapping.copy() | 463 lm = mapping.copy() |
464 lm.update(d.tomap()) | 464 lm.update(d.tomap()) |
465 return runsymbol(context, lm, memb) | 465 return runsymbol(context, lm, memb) |
466 # TODO: d.get(memb) if dict-like? | 466 if util.safehasattr(d, 'get'): |
467 return _getdictitem(d, memb) | |
467 | 468 |
468 sym = findsymbolicname(darg) | 469 sym = findsymbolicname(darg) |
469 if sym: | 470 if sym: |
470 raise error.ParseError(_("keyword '%s' has no member") % sym) | 471 raise error.ParseError(_("keyword '%s' has no member") % sym) |
471 else: | 472 else: |
749 if not util.safehasattr(dictarg, 'get'): | 750 if not util.safehasattr(dictarg, 'get'): |
750 # i18n: "get" is a keyword | 751 # i18n: "get" is a keyword |
751 raise error.ParseError(_("get() expects a dict as first argument")) | 752 raise error.ParseError(_("get() expects a dict as first argument")) |
752 | 753 |
753 key = evalfuncarg(context, mapping, args[1]) | 754 key = evalfuncarg(context, mapping, args[1]) |
755 return _getdictitem(dictarg, key) | |
756 | |
757 def _getdictitem(dictarg, key): | |
754 val = dictarg.get(key) | 758 val = dictarg.get(key) |
755 if val is None: | 759 if val is None: |
756 return | 760 return |
757 return templatekw.wraphybridvalue(dictarg, key, val) | 761 return templatekw.wraphybridvalue(dictarg, key, val) |
758 | 762 |