OLD | NEW |
1 ''' | 1 ''' |
2 This module generates ANSI character codes to printing colors to terminals. | 2 This module generates ANSI character codes to printing colors to terminals. |
3 See: http://en.wikipedia.org/wiki/ANSI_escape_code | 3 See: http://en.wikipedia.org/wiki/ANSI_escape_code |
4 ''' | 4 ''' |
5 | 5 |
6 CSI = '\033[' | 6 CSI = '\033[' |
7 | 7 |
8 def code_to_chars(code): | 8 def code_to_chars(code): |
9 return CSI + str(code) + 'm' | 9 return CSI + str(code) + 'm' |
10 | 10 |
11 class AnsiCodes(object): | 11 class AnsiCodes(object): |
12 def __init__(self, codes): | 12 def __init__(self): |
13 for name in dir(codes): | 13 for name in dir(self): |
14 if not name.startswith('_'): | 14 if not name.startswith('_') and name.upper() == name: |
15 value = getattr(codes, name) | 15 value = getattr(self, name) |
16 setattr(self, name, code_to_chars(value)) | 16 setattr(self, name, code_to_chars(value)) |
17 | 17 |
18 class AnsiFore: | 18 |
| 19 class AnsiFore(AnsiCodes): |
19 BLACK = 30 | 20 BLACK = 30 |
20 RED = 31 | 21 RED = 31 |
21 GREEN = 32 | 22 GREEN = 32 |
22 YELLOW = 33 | 23 YELLOW = 33 |
23 BLUE = 34 | 24 BLUE = 34 |
24 MAGENTA = 35 | 25 MAGENTA = 35 |
25 CYAN = 36 | 26 CYAN = 36 |
26 WHITE = 37 | 27 WHITE = 37 |
27 RESET = 39 | 28 RESET = 39 |
28 | 29 |
29 class AnsiBack: | 30 class AnsiBack(AnsiCodes): |
30 BLACK = 40 | 31 BLACK = 40 |
31 RED = 41 | 32 RED = 41 |
32 GREEN = 42 | 33 GREEN = 42 |
33 YELLOW = 43 | 34 YELLOW = 43 |
34 BLUE = 44 | 35 BLUE = 44 |
35 MAGENTA = 45 | 36 MAGENTA = 45 |
36 CYAN = 46 | 37 CYAN = 46 |
37 WHITE = 47 | 38 WHITE = 47 |
38 RESET = 49 | 39 RESET = 49 |
39 | 40 |
40 class AnsiStyle: | 41 class AnsiStyle(AnsiCodes): |
41 BRIGHT = 1 | 42 BRIGHT = 1 |
42 DIM = 2 | 43 DIM = 2 |
43 NORMAL = 22 | 44 NORMAL = 22 |
44 RESET_ALL = 0 | 45 RESET_ALL = 0 |
45 | 46 |
46 Fore = AnsiCodes( AnsiFore ) | |
47 Back = AnsiCodes( AnsiBack ) | |
48 Style = AnsiCodes( AnsiStyle ) | |
49 | 47 |
| 48 # Constructing the object converts the code into the equivalent ANSI escape |
| 49 # string. |
| 50 Fore = AnsiFore() |
| 51 Back = AnsiBack() |
| 52 Style = AnsiStyle() |
OLD | NEW |