Mercurial > hg
changeset 24241:e7baf88c29c3
templatekw: forward _hybrid.get to raw values so that get(extras, key) works
ef78450c8df6 implies that the primary goal is to allow "{get(extras, key)}",
but it didn't work.
I'm not sure if _hybrid should forward all unknown attributes to values, so
only "get" is forwarded for now.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 18 Feb 2015 23:17:52 +0900 |
parents | bd504d90588d |
children | 3acb83c6c0f1 |
files | mercurial/templatekw.py tests/test-command-template.t |
diffstat | 2 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/templatekw.py Wed Feb 18 23:01:33 2015 +0900 +++ b/mercurial/templatekw.py Wed Feb 18 23:17:52 2015 +0900 @@ -14,6 +14,7 @@ # "{files % '{file}\n'}" (hgweb-style with inlining and function support) # and to access raw values: # "{ifcontains(file, files, ...)}", "{ifcontains(key, extras, ...)}" +# "{get(extras, key)}" class _hybrid(object): def __init__(self, gen, values, makemap, joinfmt=None): @@ -34,6 +35,10 @@ return x in self.values def __len__(self): return len(self.values) + def __getattr__(self, name): + if name != 'get': + raise AttributeError(name) + return getattr(self.values, name) def showlist(name, values, plural=None, element=None, **args): if not element:
--- a/tests/test-command-template.t Wed Feb 18 23:01:33 2015 +0900 +++ b/tests/test-command-template.t Wed Feb 18 23:17:52 2015 +0900 @@ -2286,6 +2286,14 @@ $ hg log -r 0 --template '{if(branches, "yes", "no")}\n' no +Test get function: + + $ hg log -r 0 --template '{get(extras, "branch")}\n' + default + $ hg log -r 0 --template '{get(files, "should_fail")}\n' + hg: parse error: get() expects a dict as first argument + [255] + Test shortest(node) function: $ echo b > b