diff options
Diffstat (limited to 'Lib/_colorize.py')
-rw-r--r-- | Lib/_colorize.py | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/Lib/_colorize.py b/Lib/_colorize.py index a39ff2c..5489548 100644 --- a/Lib/_colorize.py +++ b/Lib/_colorize.py @@ -7,7 +7,22 @@ COLORIZE = True # types if False: - from typing import IO + from typing import IO, Literal + + type ColorTag = Literal[ + "PROMPT", + "KEYWORD", + "BUILTIN", + "COMMENT", + "STRING", + "NUMBER", + "OP", + "DEFINITION", + "SOFT_KEYWORD", + "RESET", + ] + + theme: dict[ColorTag, str] class ANSIColors: @@ -23,6 +38,7 @@ class ANSIColors: WHITE = "\x1b[37m" # more like LIGHT GRAY YELLOW = "\x1b[33m" + BOLD = "\x1b[1m" BOLD_BLACK = "\x1b[1;30m" # DARK GRAY BOLD_BLUE = "\x1b[1;34m" BOLD_CYAN = "\x1b[1;36m" @@ -120,3 +136,28 @@ def can_colorize(*, file: IO[str] | IO[bytes] | None = None) -> bool: return os.isatty(file.fileno()) except io.UnsupportedOperation: return hasattr(file, "isatty") and file.isatty() + + +def set_theme(t: dict[ColorTag, str] | None = None) -> None: + global theme + + if t: + theme = t + return + + colors = get_colors() + theme = { + "PROMPT": colors.BOLD_MAGENTA, + "KEYWORD": colors.BOLD_BLUE, + "BUILTIN": colors.CYAN, + "COMMENT": colors.RED, + "STRING": colors.GREEN, + "NUMBER": colors.YELLOW, + "OP": colors.RESET, + "DEFINITION": colors.BOLD, + "SOFT_KEYWORD": colors.BOLD_BLUE, + "RESET": colors.RESET, + } + + +set_theme() |