(self, text, width, pos=-1)
| 131 | self.align(line, left=left, right=right) |
| 132 | |
| 133 | def _align_text(self, text, width, pos=-1): |
| 134 | content_len = self.ansi_length(text) |
| 135 | remaining_len = width |
| 136 | overflow = content_len - remaining_len |
| 137 | |
| 138 | if content_len > remaining_len: |
| 139 | parts = self.ANSI_RE.split(text)[::-1] |
| 140 | for idx, x in enumerate(parts): |
| 141 | if x.startswith(r"\x1b"): |
| 142 | continue |
| 143 | if len(x) > overflow: |
| 144 | parts[idx] = x[:-overflow-6] + " [...]" |
| 145 | break |
| 146 | |
| 147 | text = "".join(parts[::-1]) |
| 148 | |
| 149 | if pos == -1: |
| 150 | return text + " " * (remaining_len - content_len) |
| 151 | else: |
| 152 | return " " * (remaining_len - content_len) + text |
| 153 | |
| 154 | def print_tables(self, *tables): |
| 155 | table_widths = [t.width+2 for t in tables] |
no test coverage detected