# HG changeset patch # User Yuya Nishihara <y...@tcha.org> # Date 1552190856 -32400 # Sun Mar 10 13:07:36 2019 +0900 # Node ID 12cad6eb90a13ab7e82e0b0a925f5c5e2e7a6691 # Parent 343027851edc0337e4058feb6f51d67dc584bc0b templatefilters: add {x|cbor} filter for custom CBOR output
diff --git a/mercurial/templatefilters.py b/mercurial/templatefilters.py --- a/mercurial/templatefilters.py +++ b/mercurial/templatefilters.py @@ -23,6 +23,7 @@ from . import ( util, ) from .utils import ( + cborutil, dateutil, stringutil, ) @@ -99,6 +100,11 @@ def basename(path): """ 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 / diff --git a/tests/test-template-functions.t b/tests/test-template-functions.t --- a/tests/test-template-functions.t +++ b/tests/test-template-functions.t @@ -1495,6 +1495,32 @@ Test with non-strings like dates 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 "{'<f...@example.org>'|json}\n" -R a -l1 _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel