mekasu0124

Untitled

Mar 10th, 2024
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.93 KB | None | 0 0
  1. from enum import Enum
  2. from typing import Optional, Callable, TypeVar, Generic
  3.  
  4.  
  5. class ConsoleColors:
  6.     BLACK = "\033[30m"
  7.     RED = "\033[31m"
  8.     GREEN = "\033[32m"
  9.     YELLOW = "\033[33m"
  10.     BLUE = "\033[34m"
  11.     PURPLE = "\033[35m"
  12.     CYAN = "\033[36m"
  13.     WHITE = "\033[37m"
  14.     RESET = "\033[0m"
  15.  
  16.  
  17. T = TypeVar('T')
  18.  
  19. class Printer:
  20.     def __init__(self):
  21.         super().__init__()
  22.  
  23.     @staticmethod
  24.     def write(self, object, color: ConsoleColors) -> None:
  25.         print(color + object + ConsoleColors.RESET, end='')
  26.  
  27.     @staticmethod
  28.     def writeln(self, object, color: ConsoleColors):
  29.         print(color + object + ConsoleColors.RESET)
  30.  
  31.     @staticmethod
  32.     def get_string_from_console(
  33.         self,
  34.         prompt: str,
  35.         color: ConsoleColors,
  36.         validator: Optional[Callable[[str], bool]] = None,
  37.         errorMessage: Optional[str] = None,
  38.         errorColor: ConsoleColors = ConsoleColors.RED
  39.     ):
  40.         while True:
  41.             self.write(prompt, color)
  42.  
  43.             input_str = input()
  44.  
  45.             if input_str is not None and (validator is None or validator(input_str)):
  46.                 return input_str
  47.            
  48.             self.write(errorMessage, errorColor)
  49.  
  50.     @staticmethod
  51.     def get_from_console(
  52.         self,
  53.         prompt: str,
  54.         color: ConsoleColors,
  55.         parser: Callable[[str], T],
  56.         validator: Optional[Callable[[T], bool]] = None,
  57.         errorMessage: Optional[str] = None,
  58.         errorColor: ConsoleColors = ConsoleColors.RED
  59.     ) -> T:
  60.         while True:
  61.             self.write(prompt, color)
  62.  
  63.             try:
  64.                 value = parser(input())
  65.  
  66.                 if validator is None or validator(value):
  67.                     return value
  68.                 else:
  69.                     self.writeln(errorMessage, errorColor)
  70.             except ValueError:
  71.                 self.writeln(errorMessage, errorColor)
  72.        
Advertisement
Add Comment
Please, Sign In to add comment