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