[PATCH 4 of 4] templater: make _hybrid provide more list/dict-like methods
Ryan McElroy
rm at fb.com
Fri Apr 7 04:51:19 EDT 2017
On 4/4/17 5:00 PM, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1491312719 -32400
> # Tue Apr 04 22:31:59 2017 +0900
> # Node ID 236441d523b03a227a0562497cbd060f795d3e13
> # Parent a78c9de39862cd089aaddd9536902c7c52dfe1e6
> templater: make _hybrid provide more list/dict-like methods
Sorry for the slow review. I've looked over this series and it looks
like a good improvement to me. Being able to filter things like extra or
files through json is a big win in my opinion!
I've marked as pre-reviewed in patchwork.
>
> So the JSON filter works.
>
> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
> --- a/mercurial/templatekw.py
> +++ b/mercurial/templatekw.py
> @@ -28,6 +28,7 @@ class _hybrid(object):
> and to access raw values:
> - "{ifcontains(file, files, ...)}", "{ifcontains(key, extras, ...)}"
> - "{get(extras, key)}"
> + - "{files|json}"
> """
>
> def __init__(self, gen, values, makemap, joinfmt):
> @@ -43,8 +44,11 @@ class _hybrid(object):
> return x in self._values
> def __len__(self):
> return len(self._values)
> + def __iter__(self):
> + return iter(self._values)
> def __getattr__(self, name):
> - if name != 'get':
> + if name not in ('get', 'items', 'iteritems', 'iterkeys', 'itervalues',
> + 'keys', 'values'):
> raise AttributeError(name)
> return getattr(self._values, name)
>
> 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
> @@ -3392,6 +3392,13 @@ Test get function:
> hg: parse error: get() expects a dict as first argument
> [255]
>
> +Test json filter applied to hybrid object:
> +
> + $ hg log -r0 -T '{files|json}\n'
> + ["a"]
> + $ hg log -r0 -T '{extras|json}\n'
> + {"branch": "default"}
> +
> Test localdate(date, tz) function:
>
> $ TZ=JST-09 hg log -r0 -T '{date|localdate|isodate}\n'
>
More information about the Mercurial-devel
mailing list