##// END OF EJS Templates
Merge pull request #1867 from mcelrath/menu_borders...
Merge pull request #1867 from mcelrath/menu_borders Fix 1px margin bouncing of selected menu item. This fixes the margin of the active menu item to zero, so now the text doesn't shift around, even if you use larger fonts. To reproduce the original error, zoom your notebook (ctrl-mousewheel, or ctrl-+ in most browsers) and try the menu.

File last commit:

r6208:5902725b
r7406:9b250034 merge
Show More
nbjson.py
72 lines | 2.0 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
MinRK
split likely multiline strings when writing to/from JSON
r5278 import copy
Brian E. Granger
Adding nbformat subpackage.
r4392 import json
MinRK
split likely multiline strings when writing to/from JSON
r5278 from .nbbase import from_dict
from .rwbase import (
NotebookReader, NotebookWriter, restore_bytes, rejoin_lines, split_lines
)
MinRK
nbjson.writes always returns unicode
r6208 from IPython.utils import py3compat
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
split likely multiline strings when writing to/from JSON
r5278 return restore_bytes(rejoin_lines(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
MinRK
shorten json indent to 1sp
r5293 kwargs['indent'] = 1
MinRK
sort keys when writing json notebooks
r5271 kwargs['sort_keys'] = True
Brian Granger
Fixing minor bugs in nbformat and saving....
r6032 kwargs['separators'] = (',',': ')
MinRK
split likely multiline strings when writing to/from JSON
r5278 if kwargs.pop('split_lines', True):
nb = split_lines(copy.deepcopy(nb))
MinRK
nbjson.writes always returns unicode
r6208 return py3compat.str_to_unicode(json.dumps(nb, **kwargs), 'utf-8')
MinRK
split likely multiline strings when writing to/from JSON
r5278
Brian E. Granger
Adding nbformat subpackage.
r4392
_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