From 6504dc79b103215958de139c14ed5f5a1f9fa5bf Mon Sep 17 00:00:00 2001 From: Jann Horn Date: Mon, 2 Sep 2024 03:08:35 +0200 Subject: [PATCH] pretty stacked formatting! --- main.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index b1904c6..16533ea 100755 --- a/main.py +++ b/main.py @@ -278,6 +278,14 @@ class ThreadMessage: self.depth = None self.non_diff_root_descendants = 0 + def has_ancestor_or_self(self, ancestor): + cursor = self + while cursor != None: + if cursor == ancestor: + return True + cursor = cursor.parent + return False + def is_diff_root(self): return self.parent == None or self.is_patch @@ -393,7 +401,7 @@ def app(environ, start_response): out.append(' .empty-topic {opacity: 0.5;}') out.append(' .alt-content {display:none;}') out.append(' :target.alt-content {display:block;}') - out.append(' .message-block-container {border: 1px solid black;}') + out.append(' .message-block-container {border: 1px solid black; margin-left: 4em; margin-top: 3px; margin-bottom: 3px;}') out.append(' .message-block-meta {font-style: italic; font-weight: bolder;}') out.append(' .message-block-content {white-space: pre;}') out.append(' ') @@ -418,9 +426,9 @@ def app(environ, start_response): out.append('lore.kernel.org returned '+str(http_resp.status)+' '+html.escape(http_resp.reason, quote=False)) else: response_body = http_resp.read() - out.append('lore.kernel.org returned '+str(len(response_body))+' bytes
') + #out.append('lore.kernel.org returned '+str(len(response_body))+' bytes
') response_body = gzip.decompress(response_body) - out.append('decompresses to '+str(len(response_body))+' bytes
') + #out.append('decompresses to '+str(len(response_body))+' bytes
') # hack... global mbox_data_index @@ -447,16 +455,24 @@ def app(environ, start_response): out.append('
') printed_top_header = False printed_threads_header = False + open_message_stack = [] for block in topic_root.blocks.ranges: + while len(open_message_stack) != 0 and not block.message.has_ancestor_or_self(open_message_stack[-1]): + open_message_stack.pop() + out.append('
') if block.start_pos_child < 0 and not printed_top_header: out.append('

Top-posted messages (sorry this section looks like a mess)

') printed_top_header = True if block.start_pos_child >= 0 and not printed_threads_header: out.append('

Actual thread

') printed_threads_header = True - out.append('
') - out.append('
'+html.escape(block.message.from_hdr, quote=False)+'
') + if len(open_message_stack) == 0 or block.message != open_message_stack[-1]: + open_message_stack.append(block.message) + out.append('
') + out.append('
'+html.escape(block.message.from_hdr, quote=False)+'
') out.append('
'+html.escape(block.get_text(), quote=False)+'
') + while len(open_message_stack) != 0: + open_message_stack.pop() out.append('
') out.append('
') out.append(' ') -- 2.20.1