##// END OF EJS Templates
Tweak test for magic_cpaste.
Tweak test for magic_cpaste.

File last commit:

r5175:155b20cc
r5203:15192a1f
Show More
nbjson.py
62 lines | 1.7 KiB | text/x-python | PythonLexer
Brian E. Granger
More review changes....
r4609 """Read and write notebooks in JSON format.
Authors:
* Brian Granger
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2008-2011 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Brian E. Granger
Adding nbformat subpackage.
r4392
Brian E. Granger
Full versioning added to nbformat.
r4406 from .nbbase import from_dict
MinRK
fix base64 code in nbformat.v2...
r5175 from .rwbase import NotebookReader, NotebookWriter, restore_bytes
Brian E. Granger
Adding nbformat subpackage.
r4392 import json
Brian E. Granger
More review changes....
r4609 #-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
Brian E. Granger
Adding nbformat subpackage.
r4392
class BytesEncoder(json.JSONEncoder):
MinRK
fix base64 code in nbformat.v2...
r5175 """A JSON encoder that accepts b64 (and other *ascii*) bytestrings."""
Brian E. Granger
Adding nbformat subpackage.
r4392 def default(self, obj):
if isinstance(obj, bytes):
MinRK
fix base64 code in nbformat.v2...
r5175 return obj.decode('ascii')
Brian E. Granger
Adding nbformat subpackage.
r4392 return json.JSONEncoder.default(self, obj)
class JSONReader(NotebookReader):
Brian E. Granger
Initial draft of more formal notebook format....
r4401 def reads(self, s, **kwargs):
Brian E. Granger
Adding nbformat subpackage.
r4392 nb = json.loads(s, **kwargs)
Brian E. Granger
Full versioning added to nbformat.
r4406 nb = self.to_notebook(nb, **kwargs)
Brian E. Granger
Adding nbformat subpackage.
r4392 return nb
Brian E. Granger
Full versioning added to nbformat.
r4406 def to_notebook(self, d, **kwargs):
MinRK
fix base64 code in nbformat.v2...
r5175 return restore_bytes(from_dict(d))
Brian E. Granger
Full versioning added to nbformat.
r4406
Brian E. Granger
Adding nbformat subpackage.
r4392
class JSONWriter(NotebookWriter):
Brian E. Granger
Initial draft of more formal notebook format....
r4401 def writes(self, nb, **kwargs):
Brian E. Granger
Adding nbformat subpackage.
r4392 kwargs['cls'] = BytesEncoder
kwargs['indent'] = 4
return json.dumps(nb, **kwargs)
_reader = JSONReader()
_writer = JSONWriter()
reads = _reader.reads
read = _reader.read
Brian E. Granger
Full versioning added to nbformat.
r4406 to_notebook = _reader.to_notebook
Brian E. Granger
Adding nbformat subpackage.
r4392 write = _writer.write
writes = _writer.writes