diff options
| author | Scott Gasch <[email protected]> | 2022-03-05 10:15:03 -0800 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2022-03-05 10:15:03 -0800 |
| commit | d2e437a04124fa3c6e3175205f943769ba443393 (patch) | |
| tree | d38a6201ab72f5ae0b80307d10cf406e15f8d79d /text_utils.py | |
| parent | 0dc52d000262da329728e01444242e35809e107e (diff) | |
Improve text wrapping; add indent option.
Diffstat (limited to 'text_utils.py')
| -rw-r--r-- | text_utils.py | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/text_utils.py b/text_utils.py index cc1269c..17ac644 100644 --- a/text_utils.py +++ b/text_utils.py @@ -217,17 +217,21 @@ def justify_string( return string -def justify_text(text: str, *, width: int = 80, alignment: str = "c") -> str: +def justify_text(text: str, *, width: int = 80, alignment: str = "c", indent_by: int = 0) -> str: """ - Justifies text. + Justifies text optionally with initial indentation. >>> justify_text('This is a test of the emergency broadcast system. This is only a test.', ... width=40, alignment='j') #doctest: +NORMALIZE_WHITESPACE 'This is a test of the emergency\\nbroadcast system. This is only a test.' """ - retval = "" - line = "" + retval = '' + indent = '' + if indent_by > 0: + indent += ' ' * indent_by + line = indent + for word in text.split(): if ( len(string_utils.strip_ansi_sequences(line)) @@ -235,11 +239,14 @@ def justify_text(text: str, *, width: int = 80, alignment: str = "c") -> str: ) > width: line = line[1:] line = justify_string(line, width=width, alignment=alignment) - retval = retval + "\n" + line - line = "" - line = line + " " + word + retval = retval + '\n' + line + line = indent + line = line + ' ' + word if len(string_utils.strip_ansi_sequences(line)) > 0: - retval += "\n" + line[1:] + if alignment != 'j': + retval += "\n" + justify_string(line[1:], width=width, alignment=alignment) + else: + retval += "\n" + line[1:] return retval[1:] |
