diff --git a/columnizer.py b/columnizer.py new file mode 100644 index 0000000..2bea169 --- /dev/null +++ b/columnizer.py @@ -0,0 +1,64 @@ +import re + + +class Columnizer(): + COLUMN_LIST = None + WIDTH = 20 + + def __init__(self, width=20): + self.WIDTH = width + self.COLUMN_LIST = [] + + def add_column(self, column): + if type(column) != list: + raise ValueError + new_column = [] + for i in column: + x = pad(i, self.WIDTH) + new_column += [x] + self.COLUMN_LIST += [new_column] + + def __str__(self): + longest = 0 + return_string = "" + for i in self.COLUMN_LIST: + if len(i) > longest: + longest = len(i) + + # Print start + return_string += "┌" + for i in range(0, len(self.COLUMN_LIST)): + return_string += "─" * self.WIDTH + if i == len(self.COLUMN_LIST) - 1: + return_string += "┐\n" + else: + return_string += "┬" + + # Print body + for i in range(0, longest): + for j in self.COLUMN_LIST: + return_string += "│" + try: + return_string += j[i] + except(IndexError): + return_string += " " * self.WIDTH + return_string += "│\n" + + # Print end + return_string += "└" + for i in range(0, len(self.COLUMN_LIST)): + return_string += "─" * self.WIDTH + if i == len(self.COLUMN_LIST) - 1: + return_string += "┘" + else: + return_string += "┴" + return return_string + + +def pad(text, width): + regex = re.compile("\033.*?m") + length = len(regex.sub("", str(text))) + padding = width - length + if padding > 0: + text = " " * (padding//2) + str(text) + " " * ((padding+1)//2) + return text