Mercurial > hg
comparison mercurial/templatefilters.py @ 32743:f924dd043974
json: pass formatting options recursively
This bug was introduced in 654e9a1c8a6c. It's okay to escape <>, but is
unnecessary for command output.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 09 Jun 2017 21:33:15 +0900 |
parents | 08d0892c93d8 |
children | 0fa781320203 |
comparison
equal
deleted
inserted
replaced
32742:08d0892c93d8 | 32743:f924dd043974 |
---|---|
232 elif isinstance(obj, (int, long, float)): | 232 elif isinstance(obj, (int, long, float)): |
233 return pycompat.bytestr(obj) | 233 return pycompat.bytestr(obj) |
234 elif isinstance(obj, bytes): | 234 elif isinstance(obj, bytes): |
235 return '"%s"' % encoding.jsonescape(obj, paranoid=paranoid) | 235 return '"%s"' % encoding.jsonescape(obj, paranoid=paranoid) |
236 elif util.safehasattr(obj, 'keys'): | 236 elif util.safehasattr(obj, 'keys'): |
237 out = ['"%s": %s' % (encoding.jsonescape(k, paranoid=paranoid), json(v)) | 237 out = ['"%s": %s' % (encoding.jsonescape(k, paranoid=paranoid), |
238 json(v, paranoid)) | |
238 for k, v in sorted(obj.iteritems())] | 239 for k, v in sorted(obj.iteritems())] |
239 return '{' + ', '.join(out) + '}' | 240 return '{' + ', '.join(out) + '}' |
240 elif util.safehasattr(obj, '__iter__'): | 241 elif util.safehasattr(obj, '__iter__'): |
241 out = [json(i) for i in obj] | 242 out = [json(i, paranoid) for i in obj] |
242 return '[' + ', '.join(out) + ']' | 243 return '[' + ', '.join(out) + ']' |
243 else: | 244 else: |
244 raise TypeError('cannot encode type %s' % obj.__class__.__name__) | 245 raise TypeError('cannot encode type %s' % obj.__class__.__name__) |
245 | 246 |
246 @templatefilter('lower') | 247 @templatefilter('lower') |