""" Terminal coloring via ANSI escape codes """ def color(s, *codes): if len(codes)==0: raise Exception("what color, yo?") if len(codes)>1: codes = sorted(codes, key=code_precedence) for code in codes: s = CODES[code] + s s += CODES['reset'] return s def code_precedence(code): if code=='bold': return 10 else: return 100 # adapted from http://dotfiles.org/~sd/.irbrc CODES = dict( black = "\033[0;30m", gray = "\033[1;30m", lgray = "\033[0;37m", white = "\033[1;37m", red = "\033[0;31m", lred = "\033[1;31m", green = "\033[0;32m", lgreen = "\033[1;32m", brown = "\033[0;33m", yellow = "\033[1;33m", blue = "\033[0;34m", lblue = "\033[1;34m", purple = "\033[0;35m", lpurple = "\033[1;35m", cyan = "\033[0;36m", lcyan = "\033[1;36m", backblack = "\033[40m", backred = "\033[41m", backgreen = "\033[42m", backyellow = "\033[43m", backblue = "\033[44m", backpurple = "\033[45m", backcyan = "\033[46m", backgray = "\033[47m", reset = "\033[0m", bold = "\033[1m", underscore = "\033[4m", blink = "\033[5m", reverse = "\033[7m", concealed = "\033[8m", ) XTERM_SET_TITLE = "\033]2;" XTERM_END = "\007" ITERM_SET_TAB = "\033]1;" ITERM_END = "\007" SCREEN_SET_STATUS = "\033]0;" SCREEN_END = "\007"