[PATCH 2 of 2 STABLE] formatter: handle lists in json output
timeless
timeless at fmr.im
Thu Apr 21 02:09:07 EDT 2016
# HG changeset patch
# User timeless <timeless at mozdev.org>
# Date 1461211019 0
# Thu Apr 21 03:56:59 2016 +0000
# Branch stable
# Node ID ea574ef953fba7f9c1d6a434267dc10b17972549
# Parent 24fa6b119f160b3adf25c1018bb322ca4db9b948
# Available At bb://timeless/mercurial-crew
# hg pull bb://timeless/mercurial-crew -r ea574ef953fb
formatter: handle lists in json output
evolve crashes sending lists to _jsonifyobj because encoding.jsonescape
does not expect lists...
diff -r 24fa6b119f16 -r ea574ef953fb mercurial/formatter.py
--- a/mercurial/formatter.py Thu Apr 21 03:53:41 2016 +0000
+++ b/mercurial/formatter.py Thu Apr 21 03:56:59 2016 +0000
@@ -110,9 +110,7 @@
self._ui.write(cPickle.dumps(self._data))
def _jsonifyobj(v):
- if isinstance(v, tuple):
- return '[' + ', '.join(_jsonifyobj(e) for e in v) + ']'
- elif v is None:
+ if v is None:
return 'null'
elif v is True:
return 'true'
@@ -120,11 +118,18 @@
return 'false'
elif isinstance(v, (int, float)):
return str(v)
+ elif isinstance(v, str):
+ return '"%s"' % encoding.jsonescape(v)
elif isinstance(v, dict):
return ('{' + ', '.join('%s: %s' %
(_jsonifyobj(k), _jsonifyobj(v[k])) for k in v) +
'}')
else:
+ try:
+ i = iter(v)
+ return '[' + ', '.join(_jsonifyobj(e) for e in i) + ']'
+ except TypeError:
+ pass
return '"%s"' % encoding.jsonescape(v)
class jsonformatter(baseformatter):
More information about the Mercurial-devel
mailing list