|
From: | Philippe Mathieu-Daudé |
Subject: | Re: [PATCH 1/4] python/utils: add enboxify() text decoration utility |
Date: | Wed, 16 Feb 2022 00:57:11 +0100 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 |
On 16/2/22 00:53, John Snow wrote:
On Tue, Feb 15, 2022 at 5:55 PM Eric Blake <eblake@redhat.com> wrote:On Tue, Feb 15, 2022 at 05:08:50PM -0500, John Snow wrote:print(enboxify(msg, width=72, name="commit message"))┏━ commit message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ enboxify() takes a chunk of text and wraps it in a text art box that ┃ ┃ adheres to a specified width. An optional title label may be given, ┃ ┃ and any of the individual glyphs used to draw the box may be ┃Why do these two lines have a leading space,┃ replaced or specified as well. ┃but this one doesn't? It must be an off-by-one corner case when your choice of space to wrap on is exactly at the wrap column.Right, you're probably witnessing the right-pad *and* the actual space.┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ Signed-off-by: John Snow <jsnow@redhat.com> --- python/qemu/utils/__init__.py | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+)
+ def _wrap(line: str) -> str: + return os.linesep.join([ + wrapped_line.ljust(lwidth) + suffix + for wrapped_line in textwrap.wrap( + line, width=lwidth, initial_indent=prefix, + subsequent_indent=prefix, replace_whitespace=False, + drop_whitespace=False, break_on_hyphens=False)Always nice when someone else has written the cool library function to do all the hard work for you ;) But this is probably where you have the off-by-one I called out above.Yeah, I just didn't want it to eat multiple spaces if they were present -- I wanted it to reproduce them faithfully. The tradeoff is some silliness near the margins. Realistically, if I want something any better than what I've done here, I should find a library to do it for me instead -- but for the sake of highlighting some important information, this may be just-enough-juice.
's/^┃ /┃ /' on top ;D
[Prev in Thread] | Current Thread | [Next in Thread] |