|
|
|
@ -260,13 +260,14 @@ class Paginator:
|
|
|
|
def add_page_break(self, *, to_beginning: bool=False) -> None:
|
|
|
|
def add_page_break(self, *, to_beginning: bool=False) -> None:
|
|
|
|
self.add(self._page_break, to_beginning=to_beginning)
|
|
|
|
self.add(self._page_break, to_beginning=to_beginning)
|
|
|
|
|
|
|
|
|
|
|
|
def add(self, item: typing.Any, *, to_beginning: bool=False, keep_intact: bool=False) -> None:
|
|
|
|
def add(self, item: typing.Any, *, to_beginning: bool=False, keep_intact: bool=False, truncate=False) -> None:
|
|
|
|
item = str(item)
|
|
|
|
item = str(item)
|
|
|
|
i = 0
|
|
|
|
i = 0
|
|
|
|
if not keep_intact and not item == self._page_break:
|
|
|
|
if not keep_intact and not item == self._page_break:
|
|
|
|
item_parts = item.strip('\n').split('\n')
|
|
|
|
item_parts = item.strip('\n').split('\n')
|
|
|
|
for part in item_parts:
|
|
|
|
for part in item_parts:
|
|
|
|
if len(part) > self._max_line_length:
|
|
|
|
if len(part) > self._max_line_length:
|
|
|
|
|
|
|
|
if not truncate:
|
|
|
|
length = 0
|
|
|
|
length = 0
|
|
|
|
out_str = ''
|
|
|
|
out_str = ''
|
|
|
|
|
|
|
|
|
|
|
|
@ -292,6 +293,9 @@ class Paginator:
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
close_line(bit)
|
|
|
|
close_line(bit)
|
|
|
|
close_line('')
|
|
|
|
close_line('')
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
line = f'{part:.{self._max_line_length-3}}...'
|
|
|
|
|
|
|
|
self._parts.insert(i, line) if to_beginning else self._parts.append(line)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self._parts.insert(i, part) if to_beginning else self._parts.append(part)
|
|
|
|
self._parts.insert(i, part) if to_beginning else self._parts.append(part)
|
|
|
|
i += 1
|
|
|
|
i += 1
|
|
|
|
|