31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
import style
|
|
|
|
|
|
class _StyledString(str):
|
|
|
|
def __new__(cls, style_list, sep, *objects):
|
|
return super(_StyledString, cls).__new__(cls, sep.join([str(obj) for obj in objects]))
|
|
|
|
def __init__(self, style_list, sep, *objects):
|
|
self._style_start = ';'.join([str(s[0]) for s in style_list])
|
|
self._style_end = ';'.join([str(s[1]) for s in style_list])
|
|
self._sep = sep
|
|
self._objects = objects
|
|
|
|
def __add__(self, other):
|
|
return self.__str__() + str(other)
|
|
|
|
def __str__(self):
|
|
if style._StyledStringBuilder._enabled:
|
|
string = ''
|
|
for i, obj in enumerate(self._objects):
|
|
if i > 0:
|
|
string += self._sep
|
|
|
|
if type(obj) is _StyledString:
|
|
string += '%s\033[%sm' % (obj, self._style_start)
|
|
else:
|
|
string += str(obj)
|
|
return '\033[%sm%s\033[%sm' % (self._style_start, string, self._style_end)
|
|
return super(_StyledString, self).__str__()
|