##// END OF EJS Templates
Updates to basic notebook format....
Updates to basic notebook format. * The format now handles multiple output blocks. * XML now as worksheets, cells and outputs tags.

File last commit:

r4401:f3a5072f
r4402:4b0e672c
Show More
nbjson.py
38 lines | 834 B | text/x-python | PythonLexer
"""Read and write notebooks in JSON format."""
from base64 import encodestring
from .rwbase import NotebookReader, NotebookWriter, base64_decode
import json
class BytesEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, bytes):
return unicode(encodestring(bytes))
return json.JSONEncoder.default(self, obj)
class JSONReader(NotebookReader):
def reads(self, s, **kwargs):
nb = json.loads(s, **kwargs)
nb = base64_decode(nb)
return nb
class JSONWriter(NotebookWriter):
def writes(self, nb, **kwargs):
kwargs['cls'] = BytesEncoder
kwargs['indent'] = 4
return json.dumps(nb, **kwargs)
_reader = JSONReader()
_writer = JSONWriter()
reads = _reader.reads
read = _reader.read
write = _writer.write
writes = _writer.writes