diff options
| author | 2020-06-26 01:52:15 -0400 | |
|---|---|---|
| committer | 2020-06-26 03:34:38 -0400 | |
| commit | be4ce9ee81a0487e9e2417bc952505a3db81fec6 (patch) | |
| tree | 5148527ef8717c4d2083a5845244c61b44fc1d18 | |
| parent | Account for spaces in LinePaginator._split_remaining_lines() (diff) | |
Fix LinePaginator new page creation
| -rw-r--r-- | bot/pagination.py | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/bot/pagination.py b/bot/pagination.py index e41f9a521..be3f82343 100644 --- a/bot/pagination.py +++ b/bot/pagination.py @@ -62,7 +62,7 @@ class LinePaginator(Paginator): if scale_to_size < max_size: raise ValueError("scale_to_size must be >= max_size.") - self.scale_to_size = scale_to_size + self.scale_to_size = scale_to_size - len(suffix) self.max_lines = max_lines self._current_page = [prefix] self._linecount = 0 @@ -94,14 +94,14 @@ class LinePaginator(Paginator): raise RuntimeError(f'Line exceeds maximum scale_to_size {self.scale_to_size}' ' and could not be split.') - if self.max_lines is not None: - if self._linecount >= self.max_lines: - self._linecount = 0 - self.close_page() + if self.max_lines is not None and self._linecount >= self.max_lines: + log.debug("max_lines exceeded, creating new page.") + self._new_page() + elif self._count + len(line) + 1 > self.max_size and self._linecount > 0: + log.debug("max_size exceeded on page with lines, creating new page.") + self._new_page() - self._linecount += 1 - if self._count + len(line) + 1 > self.max_size: - self.close_page() + self._linecount += 1 self._count += len(line) + 1 self._current_page.append(line) @@ -111,8 +111,14 @@ class LinePaginator(Paginator): self._count += 1 if remaining_words: + self._new_page() self.add_line(remaining_words) + def _new_page(self) -> None: + self._linecount = 0 + self._count = len(self.prefix) + 1 + self.close_page() + def _split_remaining_words(self, line: str, max_chars: int) -> t.Tuple[str, t.Optional[str]]: """ Internal: split a line into two strings -- reduced_words and remaining_words. |