import sys

class Terminal(object):
    COLOR = {
        'red': '31',
        'green': '32',
        'blue': '34',
        'gray': '37'
    }
    NORMAL_INTENSITY = '1'
    BRIGHT_INTENSITY = '2'
    ESCAPE = '\x1b['
    RESET = '0'
    SEPARATOR = ';'
    COLOR_CODE = 'm'
    CLEAR_RIGHT_CODE = 'K'

    @classmethod
    def set_color(cls, color):
        """
        color: str - color definition string
        """
        mod = Terminal.NORMAL_INTENSITY
        if color.startswith('bright'):
            mod = Terminal.BRIGHT_INTENSITY
            color = color[len('bright'):]
        color_code = Terminal.COLOR[color]

        sys.stdout.write(cls.ESCAPE + color_code + cls.SEPARATOR + mod
                         + cls.COLOR_CODE)

    @classmethod
    def reset_color(cls):
        sys.stdout.write(cls.ESCAPE + cls.RESET + cls.COLOR_CODE)

    @classmethod
    def clear_right(cls):
        sys.stdout.write(cls.ESCAPE + cls.CLEAR_RIGHT_CODE)
