mirror of https://gitlab.com/ceda_ei/sky
Add columnizer module to create columns.
This commit is contained in:
parent
6e004ff85c
commit
cda1142a98
|
@ -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
|
Loading…
Reference in New Issue