##// END OF EJS Templates
Fixed bug where cell was not getting inserted because index is optional.
Fixed bug where cell was not getting inserted because index is optional.

File last commit:

r13389:06c0188d
r13766:cc4abb16
Show More
utils.py
74 lines | 2.1 KiB | text/x-python | PythonLexer
Brian E. Granger
Splitting handlers into different files....
r10642 """Notebook related utilities
Authors:
* Brian Granger
"""
#-----------------------------------------------------------------------------
# Copyright (C) 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.
#-----------------------------------------------------------------------------
MinRK
add path2url and url2path to html.utils
r13054 import os
Thomas Kluyver
Fix imports in IPython.html.utils
r13389 try:
from urllib.parse import quote, unquote
except ImportError:
from urllib import quote, unquote
MinRK
add path2url and url2path to html.utils
r13054
MinRK
urllib.quote/unquote must be str on Python 2
r13131 from IPython.utils import py3compat
Brian E. Granger
Splitting handlers into different files....
r10642 #-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
def url_path_join(*pieces):
"""Join components of url into a relative url
Use to prevent double slash when joining subpath. This will leave the
initial and final / in place
"""
initial = pieces[0].startswith('/')
final = pieces[-1].endswith('/')
MinRK
add path2url and url2path to html.utils
r13054 stripped = [s.strip('/') for s in pieces]
result = '/'.join(s for s in stripped if s)
Brian E. Granger
Splitting handlers into different files....
r10642 if initial: result = '/' + result
if final: result = result + '/'
Brian E. Granger
Fixing url join problems.
r10644 if result == '//': result = '/'
Brian E. Granger
Splitting handlers into different files....
r10642 return result
MinRK
add path2url and url2path to html.utils
r13054
def path2url(path):
"""Convert a local file path to a URL"""
MinRK
s/os.path.sep/os.sep/
r13182 pieces = [ quote(p) for p in path.split(os.sep) ]
MinRK
add path2url and url2path to html.utils
r13054 # preserve trailing /
if pieces[-1] == '':
pieces[-1] = '/'
url = url_path_join(*pieces)
return url
def url2path(url):
"""Convert a URL to a local file path"""
pieces = [ unquote(p) for p in url.split('/') ]
path = os.path.join(*pieces)
return path
MinRK
move url_[un]escape to utils from nbm
r13068 def url_escape(path):
"""Escape special characters in a URL path
Turns '/foo bar/' into '/foo%20bar/'
"""
MinRK
urllib.quote/unquote must be str on Python 2
r13131 parts = py3compat.unicode_to_str(path).split('/')
return u'/'.join([quote(p) for p in parts])
MinRK
move url_[un]escape to utils from nbm
r13068
def url_unescape(path):
"""Unescape special characters in a URL path
Turns '/foo%20bar/' into '/foo bar/'
"""
MinRK
urllib.quote/unquote must be str on Python 2
r13131 return u'/'.join([
py3compat.str_to_unicode(unquote(p))
for p in py3compat.unicode_to_str(path).split('/')
])
MinRK
move url_[un]escape to utils from nbm
r13068