X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=text_utils.py;h=18a22577d7efef0962f1ba8d65ade4e859ce4e4b;hb=06ade55539e2e31fbd8bc708ab6f91953d9663f3;hp=f04c61813ef227c4bfe356f42d08c59f2234132c;hpb=532df2c5b57c7517dfb3dddd8c1358fbadf8baf3;p=python_utils.git diff --git a/text_utils.py b/text_utils.py index f04c618..18a2257 100644 --- a/text_utils.py +++ b/text_utils.py @@ -371,6 +371,15 @@ def header( def box( title: Optional[str] = None, text: Optional[str] = None, *, width: int = 80, color: str = '' +) -> str: + assert width > 4 + if text is not None: + text = justify_text(text, width=width - 4, alignment='l') + return preformatted_box(title, text, width=width, color=color) + + +def preformatted_box( + title: Optional[str] = None, text: Optional[str] = None, *, width=80, color: str = '' ) -> str: assert width > 4 ret = '' @@ -393,9 +402,9 @@ def box( ) ret += color + '│' + ' ' * w + '│' + rset + '\n' if text is not None: - for line in justify_text(text, width=w - 2, alignment='l').split('\n'): + for line in text.split('\n'): tw = len(string_utils.strip_ansi_sequences(line)) - assert tw < w + assert tw <= w ret += color + '│ ' + rset + line + ' ' * (w - tw - 2) + color + ' │' + rset + '\n' ret += color + '╰' + '─' * w + '╯' + rset + '\n' return ret @@ -419,7 +428,7 @@ def print_box( ╰────╯ """ - print(box(title, text, width=width, color=color), end='') + print(preformatted_box(title, text, width=width, color=color), end='') if __name__ == '__main__':