-
def basic_color(code):
"""
16 colors supported
"""
- def inner(text, bold=True):
+ def inner(text, rl=False):
+ """
+ Every raw_input with color sequences should be called with
+ rl=True to avoid readline messed up the length calculation
+ """
c = code
- if bold:
- c = "1;%s" % c
- return "\033[%sm%s\033[0m" % (c, text)
+ if rl:
+ return "\001\033[%sm\002%s\001\033[0m\002" % (c, text)
+ else:
+ return "\033[%sm%s\033[0m" % (c, text)
return inner
"""
256 colors supported
"""
- def inner(text):
+ def inner(text, rl=False):
+ """
+ Every raw_input with color sequences should be called with
+ rl=True to avoid readline messed up the length calculation
+ """
c = code
- return "\033[38;5;%sm%s\033[0m" % (c, text)
+ if rl:
+ return "\001\033[38;5;%sm\002%s\001\033[0m\002" % (c, text)
+ else:
+ return "\033[38;5;%sm%s\033[0m" % (c, text)
return inner
+"""
+16 basic colors
+"""
default = basic_color('39')
black = basic_color('30')
red = basic_color('31')
light_cyan = basic_color('96')
white = basic_color('97')
+"""
+16 basic colors on background
+"""
on_default = basic_color('49')
on_black = basic_color('40')
on_red = basic_color('41')