-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
MoessnerFabian(Group)
committed
Jan 28, 2025
1 parent
fb61ad6
commit 724fdb5
Showing
1 changed file
with
97 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. | ||
''' | ||
This module generates ANSI character codes to printing colors to terminals. | ||
See: http://en.wikipedia.org/wiki/ANSI_escape_code | ||
''' | ||
|
||
# ANSI escape sequences | ||
CSI = '\033[' | ||
OSC = '\033]' | ||
BEL = '\a' | ||
|
||
def code_to_chars(code): | ||
return CSI + str(code) + 'm' | ||
|
||
def set_title(title): | ||
return OSC + '2;' + title + BEL | ||
|
||
def clear_screen(mode=2): | ||
return CSI + str(mode) + 'J' | ||
|
||
def clear_line(mode=2): | ||
return CSI + str(mode) + 'K' | ||
|
||
class AnsiCodes(object): | ||
def __init__(self): | ||
# the subclasses declare class attributes which are numbers. | ||
# Upon instantiation we define instance attributes, which are the same | ||
# as the class attributes but wrapped with the ANSI escape sequence | ||
for name in dir(self): | ||
if not name.startswith('_'): | ||
value = getattr(self, name) | ||
setattr(self, name, code_to_chars(value)) | ||
|
||
class AnsiCursor(object): | ||
def UP(self, n=1): | ||
return CSI + str(n) + 'A' | ||
def DOWN(self, n=1): | ||
return CSI + str(n) + 'B' | ||
def FORWARD(self, n=1): | ||
return CSI + str(n) + 'C' | ||
def BACK(self, n=1): | ||
return CSI + str(n) + 'D' | ||
def POS(self, x=1, y=1): | ||
return CSI + str(y) + ';' + str(x) + 'H' | ||
|
||
class AnsiFore(AnsiCodes): | ||
BLACK = 30 | ||
RED = 31 | ||
GREEN = 32 | ||
YELLOW = 33 | ||
BLUE = 34 | ||
MAGENTA = 35 | ||
CYAN = 36 | ||
WHITE = 37 | ||
RESET = 39 | ||
|
||
# These are fairly well supported, but not part of the standard. | ||
LIGHTBLACK_EX = 90 | ||
LIGHTRED_EX = 91 | ||
LIGHTGREEN_EX = 92 | ||
LIGHTYELLOW_EX = 93 | ||
LIGHTBLUE_EX = 94 | ||
LIGHTMAGENTA_EX = 95 | ||
LIGHTCYAN_EX = 96 | ||
LIGHTWHITE_EX = 97 | ||
|
||
class AnsiBack(AnsiCodes): | ||
BLACK = 40 | ||
RED = 41 | ||
GREEN = 42 | ||
YELLOW = 43 | ||
BLUE = 44 | ||
MAGENTA = 45 | ||
CYAN = 46 | ||
WHITE = 47 | ||
RESET = 49 | ||
|
||
# These are fairly well supported, but not part of the standard. | ||
LIGHTBLACK_EX = 100 | ||
LIGHTRED_EX = 101 | ||
LIGHTGREEN_EX = 102 | ||
LIGHTYELLOW_EX = 103 | ||
LIGHTBLUE_EX = 104 | ||
LIGHTMAGENTA_EX = 105 | ||
LIGHTCYAN_EX = 106 | ||
LIGHTWHITE_EX = 107 | ||
|
||
class AnsiStyle(AnsiCodes): | ||
BRIGHT = 1 | ||
DIM = 2 | ||
NORMAL = 22 | ||
RESET_ALL = 0 | ||
|
||
Fore = AnsiFore() | ||
Back = AnsiBack() | ||
Style = AnsiStyle() | ||
Cursor = AnsiCursor() |