retronews

a featureful fork of the luke8086/retronews hn+lobste.rs tui
Log | Files | Refs | README | LICENSE

commit f6f7eb96691fca6f6806fdc0eb8992e4c99acd82
parent 6130fed4429a6af69e879e3e18f2d441efd1d279
Author: luke8086 <55237178+luke8086@users.noreply.github.com>
Date:   Sun, 31 Jul 2022 12:30:51 +0000

Rename app_flatten_thread to msg_flatten_thread and refactor

Diffstat:
Mretronews.py | 27++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/retronews.py b/retronews.py @@ -653,25 +653,13 @@ def app_open_thread(app: AppState, thread_message: Message) -> None: app_close_thread(app) index_pos = thread_message.index_position - thread_messages = list(app_flatten_thread(new_thread_message, prefix="", is_last_child=False, is_top=True)) + thread_messages = list(msg_flatten_thread(new_thread_message)) new_thread_message.total_comments = len(thread_messages) messages = app.messages[:index_pos] + thread_messages + app.messages[index_pos + 1 :] # noqa: E203 app_load_messages(app, messages, selected_message_id=thread_message.msg_id, show_pager=True) -def app_flatten_thread(msg: Message, prefix, is_last_child, is_top=False) -> Generator[Message, None, None]: - msg.index_tree = "" if is_top else f"{prefix}{'└─' if is_last_child else '├─'}> " - yield msg - - children_count = len(msg.children) - - for i, child_node in enumerate(msg.children): - tree_prefix = "" if is_top else f"{prefix}{' ' if is_last_child else '│ '}" - for child in app_flatten_thread(child_node, tree_prefix, i == children_count - 1): - yield child - - def app_get_pager_line_attr(app: AppState, line: str) -> int: if line.startswith("Content-Location: "): return app.colors.tree @@ -853,6 +841,19 @@ def app_init(screen: "curses._CursesWindow", db: sqlite3.Connection) -> AppState return app +def msg_flatten_thread(msg: Message, prefix: str = "", is_last_child: bool = False) -> Generator[Message, None, None]: + msg.index_tree = "" if msg.is_thread else f"{prefix}{'└─' if is_last_child else '├─'}> " + yield msg + + child_count = len(msg.children) + child_prefix = "" if msg.is_thread else f"{prefix}{' ' if is_last_child else '│ '}" + + for i, child_node in enumerate(msg.children): + child_is_last = i == child_count - 1 + for child in msg_flatten_thread(child_node, prefix=child_prefix, is_last_child=child_is_last): + yield child + + def msg_build_lines(msg: Message) -> list[str]: lines = [ f"Content-Location: {msg.content_location}",