Source code for bokeh.util.string
""" Functions useful for string manipulations or encoding.
"""
from __future__ import absolute_import
import re
[docs]def encode_utf8(u):
""" Encode a UTF-8 string to a sequence of bytes.
Args:
u (str) : the string to encode
Returns:
bytes
"""
import sys
if sys.version_info[0] == 2:
u = u.encode('utf-8')
return u
[docs]def decode_utf8(u):
""" Decode a sequence of bytes to a UTF-8 string
Args:
u (str) : the bytes to decode
Returns:
UTF-8 string
"""
import sys
if sys.version_info[0] == 2:
u = u.decode('utf-8')
return u
[docs]def nice_join(seq, sep=", "):
""" Join together sequences of strings into English-friendly phrases using
the conjunction ``or`` when appropriate.
Args:
seq (seq[str]) : a sequence of strings to nicely join
sep (str, optional) : a sequence delimiter to use (default: ", ")
Returns:
a joined string
Examples:
>>> nice_join(["a", "b", "c"])
'a, b or c'
"""
seq = [str(x) for x in seq]
if len(seq) <= 1:
return sep.join(seq)
else:
return "%s or %s" % (sep.join(seq[:-1]), seq[-1])
[docs]def snakify(name, sep='_'):
""" Convert CamelCase to snake_case. """
name = re.sub("([A-Z]+)([A-Z][a-z])", r"\1%s\2" % sep, name)
name = re.sub("([a-z\\d])([A-Z])", r"\1%s\2" % sep, name)
return name.lower()