|
|
"""The basic dict based notebook 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
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
|
|
import pprint
|
|
|
import uuid
|
|
|
|
|
|
from IPython.utils.ipstruct import Struct
|
|
|
from IPython.utils.py3compat import unicode_type
|
|
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
# Code
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
|
|
class NotebookNode(Struct):
|
|
|
pass
|
|
|
|
|
|
|
|
|
def from_dict(d):
|
|
|
if isinstance(d, dict):
|
|
|
newd = NotebookNode()
|
|
|
for k,v in d.items():
|
|
|
newd[k] = from_dict(v)
|
|
|
return newd
|
|
|
elif isinstance(d, (tuple, list)):
|
|
|
return [from_dict(i) for i in d]
|
|
|
else:
|
|
|
return d
|
|
|
|
|
|
|
|
|
def new_code_cell(code=None, prompt_number=None):
|
|
|
"""Create a new code cell with input and output"""
|
|
|
cell = NotebookNode()
|
|
|
cell.cell_type = u'code'
|
|
|
if code is not None:
|
|
|
cell.code = unicode_type(code)
|
|
|
if prompt_number is not None:
|
|
|
cell.prompt_number = int(prompt_number)
|
|
|
return cell
|
|
|
|
|
|
|
|
|
def new_text_cell(text=None):
|
|
|
"""Create a new text cell."""
|
|
|
cell = NotebookNode()
|
|
|
if text is not None:
|
|
|
cell.text = unicode_type(text)
|
|
|
cell.cell_type = u'text'
|
|
|
return cell
|
|
|
|
|
|
|
|
|
def new_notebook(cells=None):
|
|
|
"""Create a notebook by name, id and a list of worksheets."""
|
|
|
nb = NotebookNode()
|
|
|
if cells is not None:
|
|
|
nb.cells = cells
|
|
|
else:
|
|
|
nb.cells = []
|
|
|
return nb
|
|
|
|
|
|
|