##// END OF EJS Templates
formatter: use templatefilters.json()...
Yuya Nishihara -
r31782:654e9a1c default
parent child Browse files
Show More
@@ -112,8 +112,8 b' from .node import ('
112 )
112 )
113
113
114 from . import (
114 from . import (
115 encoding,
116 error,
115 error,
116 templatefilters,
117 templatekw,
117 templatekw,
118 templater,
118 templater,
119 util,
119 util,
@@ -282,24 +282,6 b' class pickleformatter(baseformatter):'
282 baseformatter.end(self)
282 baseformatter.end(self)
283 self._out.write(pickle.dumps(self._data))
283 self._out.write(pickle.dumps(self._data))
284
284
285 def _jsonifyobj(v):
286 if isinstance(v, dict):
287 xs = ['"%s": %s' % (encoding.jsonescape(k), _jsonifyobj(u))
288 for k, u in sorted(v.iteritems())]
289 return '{' + ', '.join(xs) + '}'
290 elif isinstance(v, (list, tuple)):
291 return '[' + ', '.join(_jsonifyobj(e) for e in v) + ']'
292 elif v is None:
293 return 'null'
294 elif v is True:
295 return 'true'
296 elif v is False:
297 return 'false'
298 elif isinstance(v, (int, long, float)):
299 return str(v)
300 else:
301 return '"%s"' % encoding.jsonescape(v)
302
303 class jsonformatter(baseformatter):
285 class jsonformatter(baseformatter):
304 def __init__(self, ui, out, topic, opts):
286 def __init__(self, ui, out, topic, opts):
305 baseformatter.__init__(self, ui, topic, opts, _nullconverter)
287 baseformatter.__init__(self, ui, topic, opts, _nullconverter)
@@ -319,7 +301,8 b' class jsonformatter(baseformatter):'
319 first = False
301 first = False
320 else:
302 else:
321 self._out.write(",\n")
303 self._out.write(",\n")
322 self._out.write(' "%s": %s' % (k, _jsonifyobj(v)))
304 u = templatefilters.json(v, paranoid=False)
305 self._out.write(' "%s": %s' % (k, u))
323 self._out.write("\n }")
306 self._out.write("\n }")
324 def end(self):
307 def end(self):
325 baseformatter.end(self)
308 baseformatter.end(self)
@@ -218,7 +218,7 b' def indent(text, prefix):'
218 return "".join(indenter())
218 return "".join(indenter())
219
219
220 @templatefilter('json')
220 @templatefilter('json')
221 def json(obj):
221 def json(obj, paranoid=True):
222 if obj is None:
222 if obj is None:
223 return 'null'
223 return 'null'
224 elif obj is False:
224 elif obj is False:
@@ -228,7 +228,7 b' def json(obj):'
228 elif isinstance(obj, (int, long, float)):
228 elif isinstance(obj, (int, long, float)):
229 return str(obj)
229 return str(obj)
230 elif isinstance(obj, str):
230 elif isinstance(obj, str):
231 return '"%s"' % encoding.jsonescape(obj, paranoid=True)
231 return '"%s"' % encoding.jsonescape(obj, paranoid=paranoid)
232 elif util.safehasattr(obj, 'keys'):
232 elif util.safehasattr(obj, 'keys'):
233 out = ['%s: %s' % (json(k), json(v))
233 out = ['%s: %s' % (json(k), json(v))
234 for k, v in sorted(obj.iteritems())]
234 for k, v in sorted(obj.iteritems())]
General Comments 0
You need to be logged in to leave comments. Login now