Implement Colorizer class
authorEd Bartosh <eduard.bartosh@intel.com>
Wed, 2 Apr 2014 12:20:25 +0000 (15:20 +0300)
committerEd Bartosh <eduard.bartosh@intel.com>
Mon, 7 Apr 2014 08:08:50 +0000 (11:08 +0300)
This is going to be used to colorize repa output.

Change-Id: I5d9eddc427c80b787b4fd5d05a46e08b624aa4cc
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
repa/common.py

index 2a21d090a9cacf7b4b637b53d62a66c30e59e2c4..622b47eb190fe6100ba44e3564714d89fd666dc7 100644 (file)
@@ -32,7 +32,7 @@ Common functions, classes, exceptions.
 import sys
 import time
 import json
-from functools import wraps
+from functools import wraps, partial
 
 OBS_PROJECT_PREFIX = "home:prerelease:"
 
@@ -149,3 +149,34 @@ def retry(exceptions, tries=10, sleep=1):
         return wrap
     return decorator
 
+class Colorizer:
+    """Colorize text with ANSI colors."""
+    colors = {'black': '\033[90m', 'red':     '\033[91m',
+              'green': '\033[92m', 'yellow':  '\033[93m',
+              'blue':  '\033[94m', 'magenta': '\033[95m',
+              'cyan':  '\033[96m', 'white':   '\033[97m'
+             }
+    reset = '\033[0m'
+
+    def __init__(self, enable=True):
+        self.enabled = enable
+
+    def __getattr__(self, name):
+        if name in self.colors:
+            return partial(self.colorize, color=name)
+
+    def disable(self):
+        """Disable colorizing."""
+        self.enabled = False
+
+    def enable(self):
+        """Enable colorizing."""
+        self.enabled = True
+
+    def colorize(self, text, color):
+        """Colorize text."""
+        if self.enabled:
+            return self.reset + self.colors[color] + text + self.reset
+        else:
+            return text
+