--- 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