X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=text_utils.py;h=b42661959021c42180986f1f4e6dbaa93592a516;hb=e11d9b0958b2874bd67360552e9214d965fe0d12;hp=a6337d6c5382b80ee75a7c199849123a7e97cea8;hpb=b8d28ce7d3d913975131284aeaa5d5caf951a631;p=python_utils.git diff --git a/text_utils.py b/text_utils.py index a6337d6..b426619 100644 --- a/text_utils.py +++ b/text_utils.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +# © Copyright 2021-2022, Scott Gasch + """Utilities for dealing with "text".""" import contextlib @@ -369,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 = '' @@ -391,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