Spaces:
Paused
Paused
| import textwrap | |
| import typing as t | |
| from contextlib import contextmanager | |
| class TextWrapper(textwrap.TextWrapper): | |
| def _handle_long_word( | |
| self, | |
| reversed_chunks: t.List[str], | |
| cur_line: t.List[str], | |
| cur_len: int, | |
| width: int, | |
| ) -> None: | |
| space_left = max(width - cur_len, 1) | |
| if self.break_long_words: | |
| last = reversed_chunks[-1] | |
| cut = last[:space_left] | |
| res = last[space_left:] | |
| cur_line.append(cut) | |
| reversed_chunks[-1] = res | |
| elif not cur_line: | |
| cur_line.append(reversed_chunks.pop()) | |
| def extra_indent(self, indent: str) -> t.Iterator[None]: | |
| old_initial_indent = self.initial_indent | |
| old_subsequent_indent = self.subsequent_indent | |
| self.initial_indent += indent | |
| self.subsequent_indent += indent | |
| try: | |
| yield | |
| finally: | |
| self.initial_indent = old_initial_indent | |
| self.subsequent_indent = old_subsequent_indent | |
| def indent_only(self, text: str) -> str: | |
| rv = [] | |
| for idx, line in enumerate(text.splitlines()): | |
| indent = self.initial_indent | |
| if idx > 0: | |
| indent = self.subsequent_indent | |
| rv.append(f"{indent}{line}") | |
| return "\n".join(rv) | |