[PATCH 6 of 6] templatekw: forward _hybrid.get to raw values so that get(extras, key) works
Ryan McElroy
rm at fb.com
Mon Mar 9 02:15:40 CDT 2015
On 3/8/2015 4:56 AM, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1424269072 -32400
> # Wed Feb 18 23:17:52 2015 +0900
> # Node ID 3627f2ee9b407e144d7aad72465ace65714a22a9
> # Parent 600b24dca4f75c9692e599febe5a85e435fb79c1
> 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.
>
> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
> --- a/mercurial/templatekw.py
> +++ b/mercurial/templatekw.py
> @@ -14,6 +14,7 @@ import hbisect
> # "{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 @@ class _hybrid(object):
> return x in self.values
> def __len__(self):
> return len(self.values)
> + def __getattr__(self, name):
> + if name != 'get':
> + raise AttributeError(name)
Where is this tested? The error below seems to be coming from somewhere
else?
> + return getattr(self.values, name)
>
> def showlist(name, values, plural=None, element=None, **args):
> if not element:
> diff --git a/tests/test-command-template.t b/tests/test-command-template.t
> --- a/tests/test-command-template.t
> +++ b/tests/test-command-template.t
> @@ -2286,6 +2286,14 @@ Test branches inside if statement:
> $ 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
I have some qualms about the methods, but the end seems like there are
some useful results.
More information about the Mercurial-devel
mailing list