From af9e264ff9b567c12f5d4e576ec768a86057cb3c Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Thu, 7 Nov 2024 15:44:20 -0500 Subject: [PATCH] Add static method for parsing single mbox messages --- lib/nntp/tiny/mbox.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lib/nntp/tiny/mbox.py b/lib/nntp/tiny/mbox.py index 1d906c7..981c609 100644 --- a/lib/nntp/tiny/mbox.py +++ b/lib/nntp/tiny/mbox.py @@ -99,6 +99,34 @@ class MBoxMessage(): def is_first_line(self): return len(self.headers) == 1 and self.body == '' + @staticmethod + def each_line(text: str): + start = 0 + end = len(text) + + while True: + try: + index = text.index('\n', start, end) + + yield text[start:index+1] + + start = index + 1 + + if start == end: + break + except ValueError: + yield text[start:end] + break + + @staticmethod + def parse(text: str): + message = MBoxMessage() + + for line in MBoxMessage.each_line(text): + message.add(line) + + return message + class MBoxReader(): __slots__ = 'path', 'fh', 'line', 'buf', 'message',