@@ -187,24 +187,24 @@ def _legal_players(self) -> List[int]:
187187
188188 def _convert_messages (self , messages : Iterable [Any ]) -> List [TextArenaMessage ]:
189189 converted : List [TextArenaMessage ] = []
190+ buffered_content : List [str ] = []
190191 buffered_sender : int | None = None
191192 buffered_category : str | None = None
192- buffered_content : List [ str ] = []
193+ last_char_was_newline = False
193194
194195 def flush_buffer () -> None :
195196 nonlocal buffered_content , buffered_sender , buffered_category
196- if not buffered_content :
197- return
198- converted . append (
199- TextArenaMessage (
200- sender_id = buffered_sender if buffered_sender is not None else - 1 ,
201- content = "" . join ( buffered_content ) ,
202- category = buffered_category or "MESSAGE" ,
197+ if buffered_content :
198+ converted . append (
199+ TextArenaMessage (
200+ sender_id = buffered_sender if buffered_sender is not None else - 1 ,
201+ content = "" . join ( buffered_content ) ,
202+ category = buffered_category or "MESSAGE" ,
203+ )
203204 )
204- )
205205 buffered_content = []
206- buffered_category = None
207206 buffered_sender = None
207+ buffered_category = None
208208
209209 for entry in messages :
210210 if isinstance (entry , tuple ) and len (entry ) == 3 :
@@ -219,13 +219,29 @@ def flush_buffer() -> None:
219219 sender_id = int (sender ) if isinstance (sender , (int , float )) else - 1
220220 text = str (content )
221221
222- if buffered_content and buffered_category == category_name and buffered_sender == sender_id :
223- buffered_content .append (text )
224- else :
222+ if text == "\n " :
225223 flush_buffer ()
224+ if last_char_was_newline :
225+ converted .append (
226+ TextArenaMessage (
227+ sender_id = sender_id ,
228+ content = "" ,
229+ category = category_name ,
230+ )
231+ )
232+ last_char_was_newline = True
233+ continue
234+
235+ if buffered_sender is None or buffered_category is None :
226236 buffered_sender = sender_id
227237 buffered_category = category_name
228- buffered_content = [text ]
238+ elif buffered_sender != sender_id or buffered_category != category_name :
239+ flush_buffer ()
240+ buffered_sender = sender_id
241+ buffered_category = category_name
242+
243+ buffered_content .append (text )
244+ last_char_was_newline = False
229245
230246 flush_buffer ()
231247
0 commit comments