@@ -210,15 +210,41 @@ def unparse(text: str, entities: list):
210210 e = entity .offset + entity .length
211211 delimiter = delimiters .get (entity .type , None )
212212 if delimiter :
213- if entity .type != MessageEntityType .BLOCKQUOTE and entity .type != MessageEntityType .EXPANDABLE_BLOCKQUOTE :
213+ if entity .type == MessageEntityType .PRE :
214+ inside_blockquote = any (
215+ blk_entity .offset <= s < blk_entity .offset + blk_entity .length and
216+ blk_entity .offset < e <= blk_entity .offset + blk_entity .length
217+ for blk_entity in entities
218+ if blk_entity .type == MessageEntityType .BLOCKQUOTE
219+ )
220+ is_expandable = any (
221+ blk_entity .offset <= s < blk_entity .offset + blk_entity .length and
222+ blk_entity .offset < e <= blk_entity .offset + blk_entity .length and
223+ blk_entity .collapsed
224+ for blk_entity in entities
225+ if blk_entity .type == MessageEntityType .BLOCKQUOTE
226+ )
227+ if inside_blockquote :
228+ if is_expandable :
229+ if entity .language :
230+ open_delimiter = f"{ delimiter } { entity .language } \n **>"
231+ else :
232+ open_delimiter = f"{ delimiter } \n **>"
233+ close_delimiter = f"\n **>{ delimiter } "
234+ else :
235+ if entity .language :
236+ open_delimiter = f"{ delimiter } { entity .language } \n >"
237+ else :
238+ open_delimiter = f"{ delimiter } \n >"
239+ close_delimiter = f"\n >{ delimiter } "
240+ else :
241+ open_delimiter = delimiter
242+ close_delimiter = delimiter
243+ insert_at .append ((s , i , open_delimiter ))
244+ insert_at .append ((e , - i , close_delimiter ))
245+ elif entity .type != MessageEntityType .BLOCKQUOTE and entity .type != MessageEntityType .EXPANDABLE_BLOCKQUOTE :
214246 open_delimiter = delimiter
215247 close_delimiter = delimiter
216- if entity .type == MessageEntityType .PRE :
217- close_delimiter = '\n ' + delimiter
218- if entity .language :
219- open_delimiter += entity .language + '\n '
220- else :
221- open_delimiter += '\n '
222248 insert_at .append ((s , i , open_delimiter ))
223249 insert_at .append ((e , - i , close_delimiter ))
224250 else :
0 commit comments