From 0600b883fedaa3bd26da00ca33fe59ae9734652e Mon Sep 17 00:00:00 2001 From: "Dusty.P" Date: Wed, 6 Jun 2018 21:21:35 -0800 Subject: [PATCH] Process pages for book --- exts/imports/utils.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/exts/imports/utils.py b/exts/imports/utils.py index dc07e65..d7a0fe3 100644 --- a/exts/imports/utils.py +++ b/exts/imports/utils.py @@ -93,20 +93,21 @@ async def run_command(args): class Paginator: def __init__(self, *, - max_chars: int=1990, + max_chars: int=1970, max_lines: int=20, prefix: str='```md', suffix: str='```', page_break: str='\uFFF8', max_line_length: int=100): + _max_len = 1980 assert 0 < max_lines <= max_chars assert 0 < max_line_length < 120 self._parts = list() self._prefix = prefix self._suffix = suffix - self._max_chars = max_chars if max_chars + len(prefix) + len(suffix) + 2 <= 2000 \ - else 2000 - len(prefix) - len(suffix) - 2 + self._max_chars = max_chars if max_chars + len(prefix) + len(suffix) + 2 <= _max_len \ + else _max_len - len(prefix) - len(suffix) - 2 self._max_lines = max_lines - (prefix + suffix).count('\n') + 1 self._page_break = page_break self._max_line_length = max_line_length @@ -116,7 +117,6 @@ class Paginator: pages = list() page = '' lines = 0 - parts = list() def open_page(): nonlocal page, lines @@ -149,6 +149,15 @@ class Paginator: self._pages = pages return pages + def process_pages(self) -> typing.List[str]: + _pages = self._pages or self.pages() + _len_pages = len(_pages) + _len_page_str = len(f'{_len_pages}/{_len_pages}') + for i, page in enumerate(_pages): + if len(page) + _len_page_str <= 2000: + _pages[i] = f'{i + 1}/{_len_pages}\n{page}' + return _pages + def __len__(self): return sum(len(p) for p in self._parts) @@ -215,7 +224,7 @@ class Book: if pag == Paginator(): raise RuntimeError('Cannot create a book out of an empty Paginator.') - self._pages = pag.pages() + self._pages = pag.process_pages() self._len_pages = len(self._pages) self._current_page = 0 self._message, self._channel, self._bot = ctx