textMagician/textmagicscripts/mtalign
2024-07-31 23:12:49 +02:00

43 lines
1.2 KiB
Python
Executable File

#!/usr/bin/python3
import re
import sys
import os
import copy
ISPIPE = re.compile(r'(?<!\\)\|')
def calc_colnums(rows):
colsizes = [0]
for row in rows:
for ind,cell in enumerate(row):
if (len(colsizes) -1) < ind:
colsizes.append(0)
cell_size = len(cell.strip())
if cell_size > colsizes[ind]:
colsizes[ind] = cell_size
return colsizes
def pad_cells_and_center(rows):
pad = 1
cells_to_pad = copy.deepcopy(rows)
colsizes = calc_colnums(rows)
for row_id,row in enumerate(cells_to_pad):
for col_ind,cell in enumerate(row):
cell_size = len(cell.strip())
numspaces = (colsizes[col_ind] - cell_size) + pad
if row_id == 1:
cells_to_pad[row_id][col_ind] = ' ' * pad + '-' * colsizes[col_ind] + ' ' * pad
continue
cells_to_pad[row_id][col_ind] = ' ' * pad + cell.strip() + ' '* numspaces
return(cells_to_pad)
if __name__ == "__main__":
table = []
for row_string in sys.stdin:
table.append(ISPIPE.split(row_string.strip())[1:-1])
table = pad_cells_and_center(table)
for row in ['|' + '|'.join(r) + '|' for r in table]:
print(row)