diff --git a/pyproject.toml b/pyproject.toml index 37455f8..9623af4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "zenlib" -version = "3.0.1" +version = "3.0.2" authors = [ { name="Desultory", email="dev@pyl.onl" }, ] diff --git a/src/zenlib/util/colorize.py b/src/zenlib/util/colorize.py index 8d4e971..10cafe7 100644 --- a/src/zenlib/util/colorize.py +++ b/src/zenlib/util/colorize.py @@ -1,10 +1,10 @@ -__version__ = "0.1.0" +__version__ = "0.1.1" from enum import Enum - ANSI_START = "\x1b[" + class Colors(Enum): RED = 31 GREEN = 32 @@ -28,6 +28,6 @@ def __str__(self): return f"{ANSI_START}{color_code}{bold_str}m" -def colorize(text: str, color: str, bright=False, bold=False) -> str: +def colorize(text: str, color="white", bright=False, bold=False) -> str: color_code = Colors[color.upper()].value return f"{ANSICode(color_code, bright, bold)}{text}{ANSICode(0)}" diff --git a/tests/test_colorize.py b/tests/test_colorize.py new file mode 100644 index 0000000..cd41676 --- /dev/null +++ b/tests/test_colorize.py @@ -0,0 +1,56 @@ +from unittest import TestCase, main + +from zenlib.util import colorize + + +class TestColorize(TestCase): + def test_red(self): + self.assertEqual(colorize("test", "red"), "\033[31mtest\033[0m") + self.assertEqual(colorize("test2", "RED", bold=True), "\033[31;1mtest2\033[0m") + self.assertEqual(colorize("test3", "ReD", bright=True), "\033[91mtest3\033[0m") + self.assertEqual(colorize("test4", "REd", bold=True, bright=True), "\033[91;1mtest4\033[0m") + + def test_green(self): + self.assertEqual(colorize("test", "green"), "\033[32mtest\033[0m") + self.assertEqual(colorize("test2", "GREEN", bold=True), "\033[32;1mtest2\033[0m") + self.assertEqual(colorize("test3", "GrEeN", bright=True), "\033[92mtest3\033[0m") + self.assertEqual(colorize("test4", "GREeN", bold=True, bright=True), "\033[92;1mtest4\033[0m") + + def test_yellow(self): + self.assertEqual(colorize("test", "yellow"), "\033[33mtest\033[0m") + self.assertEqual(colorize("test2", "YELLOW", bold=True), "\033[33;1mtest2\033[0m") + self.assertEqual(colorize("test3", "YeLLoW", bright=True), "\033[93mtest3\033[0m") + self.assertEqual(colorize("test4", "YELLOw", bold=True, bright=True), "\033[93;1mtest4\033[0m") + + def test_blue(self): + self.assertEqual(colorize("test", "blue"), "\033[34mtest\033[0m") + self.assertEqual(colorize("test2", "BLUE", bold=True), "\033[34;1mtest2\033[0m") + self.assertEqual(colorize("test3", "BlUE", bright=True), "\033[94mtest3\033[0m") + self.assertEqual(colorize("test4", "BLUe", bold=True, bright=True), "\033[94;1mtest4\033[0m") + + def test_magenta(self): + self.assertEqual(colorize("test", "magenta"), "\033[35mtest\033[0m") + self.assertEqual(colorize("test2", "MAGENTA", bold=True), "\033[35;1mtest2\033[0m") + self.assertEqual(colorize("test3", "MaGeNTa", bright=True), "\033[95mtest3\033[0m") + self.assertEqual(colorize("test4", "MAGeNTa", bold=True, bright=True), "\033[95;1mtest4\033[0m") + + def test_cyan(self): + self.assertEqual(colorize("test", "cyan"), "\033[36mtest\033[0m") + self.assertEqual(colorize("test2", "CYAN", bold=True), "\033[36;1mtest2\033[0m") + self.assertEqual(colorize("test3", "CyAN", bright=True), "\033[96mtest3\033[0m") + self.assertEqual(colorize("test4", "CYAn", bold=True, bright=True), "\033[96;1mtest4\033[0m") + + def test_white(self): + self.assertEqual(colorize("test", "white"), "\033[37mtest\033[0m") + self.assertEqual(colorize("test2", "WHITE", bold=True), "\033[37;1mtest2\033[0m") + self.assertEqual(colorize("test3", "WhITE", bright=True), "\033[97mtest3\033[0m") + self.assertEqual(colorize("test4", bold=True, bright=True), "\033[97;1mtest4\033[0m") + + + def test_invalid_color(self): + with self.assertRaises(KeyError): + colorize("test", "invalid_color") + + +if __name__ == "__main__": + main()