X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=text_utils.py;h=3b7a43ee4417409094e9f9c6504d4032796cace7;hb=3bc4daf1edc121cd633429187392227f2fa61885;hp=a71a99dff943df0058cf080100c7feeedf97a6ed;hpb=497fb9e21f45ec08e1486abaee6dfa7b20b8a691;p=python_utils.git diff --git a/text_utils.py b/text_utils.py index a71a99d..3b7a43e 100644 --- a/text_utils.py +++ b/text_utils.py @@ -2,6 +2,7 @@ """Utilities for dealing with "text".""" +from collections import defaultdict import math import sys from typing import List, NamedTuple @@ -151,3 +152,18 @@ def justify_text(text: str, *, width: int = 80, alignment: str = "c") -> str: if len(line) > 0: retval += "\n" + line[1:] return retval[1:] + + +def generate_padded_columns(text: List[str]) -> str: + max_width = defaultdict(int) + for line in text: + for pos, word in enumerate(line.split()): + max_width[pos] = max(max_width[pos], len(word)) + + for line in text: + out = "" + for pos, word in enumerate(line.split()): + width = max_width[pos] + word = justify_string(word, width=width, alignment='l') + out += f'{word} ' + yield out