Mercurial > hg
changeset 41997:4df7c4b70e03
templatefilters: add {x|cbor} filter for custom CBOR output
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 10 Mar 2019 13:07:36 +0900 |
parents | 77ef3498ceb3 |
children | 018acb7a3490 |
files | mercurial/templatefilters.py tests/test-template-functions.t |
diffstat | 2 files changed, 32 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/templatefilters.py Sun Mar 10 12:57:24 2019 +0900 +++ b/mercurial/templatefilters.py Sun Mar 10 13:07:36 2019 +0900 @@ -23,6 +23,7 @@ util, ) from .utils import ( + cborutil, dateutil, stringutil, ) @@ -99,6 +100,11 @@ """ return os.path.basename(path) +@templatefilter('cbor') +def cbor(obj): + """Any object. Serializes the object to CBOR bytes.""" + return b''.join(cborutil.streamencode(obj)) + @templatefilter('commondir') def commondir(filelist): """List of text. Treats each list item as file name with /
--- a/tests/test-template-functions.t Sun Mar 10 12:57:24 2019 +0900 +++ b/tests/test-template-functions.t Sun Mar 10 13:07:36 2019 +0900 @@ -1495,6 +1495,32 @@ 1200000.00 1300000.00 +Test cbor filter: + + $ cat <<'EOF' > "$TESTTMP/decodecbor.py" + > from __future__ import absolute_import + > from mercurial import pycompat + > from mercurial.utils import ( + > cborutil, + > stringutil, + > ) + > items = cborutil.decodeall(pycompat.stdin.read()) + > pycompat.stdout.write(stringutil.pprint(items, indent=1) + b'\n') + > EOF + + $ hg log -T "{rev|cbor}" -R a -l2 | "$PYTHON" "$TESTTMP/decodecbor.py" + [ + 10, + 9 + ] + + $ hg log -T "{extras|cbor}" -R a -l1 | "$PYTHON" "$TESTTMP/decodecbor.py" + [ + { + 'branch': 'default' + } + ] + json filter should escape HTML tags so that the output can be embedded in hgweb: $ hg log -T "{'<foo@example.org>'|json}\n" -R a -l1