) -> str:
is_in_str = (CHAR_COLL_INACTIVE if self.is_in is None
else (CHAR_COLL_IN if self.is_in else CHAR_COLL_OUT))
- return (f'\n{self.id_} {is_in_str}{self.description}\n'
+ return (f'{self.id_} {is_in_str}{self.description}\n'
+ self._format_paginated(lambda count, p_id, comment:
f' {count:2} {p_id:>7} {comment}'))
self,
format_line: Callable[[int, str, str], str]
) -> str:
- pages = []
- for page in self.piece_listings:
- columns = []
- for column in page:
- lines = []
+ lines = []
+ for idx_pages, page in enumerate(self.piece_listings):
+ if idx_pages != 0:
+ lines += [' =']
+ for idx_columns, column in enumerate(page):
+ if idx_columns != 0:
+ lines += [' -']
for count, piece_id, comment in column:
lines += [format_line(count, piece_id, comment)]
- columns += ['\n'.join(lines)]
- pages += ['\n -\n'.join(columns)]
- return '\n =\n'.join(pages)
+ return '\n'.join(lines) + '\n'
def piece_listings_flat(self) -> tuple[PieceListing, ...]:
'Flattened variant of .piece_listings, no division into pages/cols.'