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