Source code for ReFreSH.MobileSuit.PrintUnit

from typing import Optional, Iterable

from colour import Color

from ..ConsoleColor import ConsoleColor


[docs] class PrintUnit: """A basic unit of output print, contains foreground, background and text.""" def __init__(self, Text: str, Foreground: Optional[Color] = None, Background: Optional[Color] = None): self.Text = Text self.Foreground = Foreground self.Background = Background
[docs] @staticmethod def ConsoleColorCast(origin: Optional[ConsoleColor]) -> Optional[Color]: """Convert ConsoleColor to Color""" if origin is None: return None elif origin == ConsoleColor.DarkYellow: return Color("orange") else: return Color(origin.name.split('.')[-1].lower())
[docs] @classmethod def ConsoleColorArrCast(cls, origin: Iterable) -> Iterable: """Convert ConsoleColor to Color""" def cast(item): return cls.ConsoleColorCast( item) if isinstance(item, ConsoleColor) else item return map(cast, origin)
def __iter__(self): return iter((self.Text, self.Foreground, self.Background))
[docs] @classmethod def FromIterable(cls, tp: Iterable): if isinstance(tp, PrintUnit): return tp return cls(*cls.ConsoleColorArrCast(tp))
[docs] @classmethod def FromIterables(cls, tp: Iterable[Iterable]): return map(cls.FromIterable, tp)