mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
formatter: use templatefilters.json()
Now _jsonifyobj() is identical to templatefilters.json(paranoid=False).
This commit is contained in:
parent
ccd02d13b3
commit
ce44b9ffb0
@ -112,8 +112,8 @@ from .node import (
|
||||
)
|
||||
|
||||
from . import (
|
||||
encoding,
|
||||
error,
|
||||
templatefilters,
|
||||
templatekw,
|
||||
templater,
|
||||
util,
|
||||
@ -282,24 +282,6 @@ class pickleformatter(baseformatter):
|
||||
baseformatter.end(self)
|
||||
self._out.write(pickle.dumps(self._data))
|
||||
|
||||
def _jsonifyobj(v):
|
||||
if isinstance(v, dict):
|
||||
xs = ['"%s": %s' % (encoding.jsonescape(k), _jsonifyobj(u))
|
||||
for k, u in sorted(v.iteritems())]
|
||||
return '{' + ', '.join(xs) + '}'
|
||||
elif isinstance(v, (list, tuple)):
|
||||
return '[' + ', '.join(_jsonifyobj(e) for e in v) + ']'
|
||||
elif v is None:
|
||||
return 'null'
|
||||
elif v is True:
|
||||
return 'true'
|
||||
elif v is False:
|
||||
return 'false'
|
||||
elif isinstance(v, (int, long, float)):
|
||||
return str(v)
|
||||
else:
|
||||
return '"%s"' % encoding.jsonescape(v)
|
||||
|
||||
class jsonformatter(baseformatter):
|
||||
def __init__(self, ui, out, topic, opts):
|
||||
baseformatter.__init__(self, ui, topic, opts, _nullconverter)
|
||||
@ -319,7 +301,8 @@ class jsonformatter(baseformatter):
|
||||
first = False
|
||||
else:
|
||||
self._out.write(",\n")
|
||||
self._out.write(' "%s": %s' % (k, _jsonifyobj(v)))
|
||||
u = templatefilters.json(v, paranoid=False)
|
||||
self._out.write(' "%s": %s' % (k, u))
|
||||
self._out.write("\n }")
|
||||
def end(self):
|
||||
baseformatter.end(self)
|
||||
|
@ -218,7 +218,7 @@ def indent(text, prefix):
|
||||
return "".join(indenter())
|
||||
|
||||
@templatefilter('json')
|
||||
def json(obj):
|
||||
def json(obj, paranoid=True):
|
||||
if obj is None:
|
||||
return 'null'
|
||||
elif obj is False:
|
||||
@ -228,7 +228,7 @@ def json(obj):
|
||||
elif isinstance(obj, (int, long, float)):
|
||||
return str(obj)
|
||||
elif isinstance(obj, str):
|
||||
return '"%s"' % encoding.jsonescape(obj, paranoid=True)
|
||||
return '"%s"' % encoding.jsonescape(obj, paranoid=paranoid)
|
||||
elif util.safehasattr(obj, 'keys'):
|
||||
out = ['%s: %s' % (json(k), json(v))
|
||||
for k, v in sorted(obj.iteritems())]
|
||||
|
Loading…
Reference in New Issue
Block a user