@@ -210,15 +210,39 @@ 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 .collapsed
222+ for blk_entity in entities
223+ if blk_entity .type == MessageEntityType .BLOCKQUOTE
224+ )
225+ if inside_blockquote :
226+ if is_expandable :
227+ if entity .language :
228+ open_delimiter = f"{ delimiter } { entity .language } \n **>"
229+ else :
230+ open_delimiter = f"{ delimiter } \n **>"
231+ close_delimiter = f"\n **>{ delimiter } "
232+ else :
233+ if entity .language :
234+ open_delimiter = f"{ delimiter } { entity .language } \n >"
235+ else :
236+ open_delimiter = f"{ delimiter } \n >"
237+ close_delimiter = f"\n >{ delimiter } "
238+ else :
239+ open_delimiter = delimiter
240+ close_delimiter = delimiter
241+ insert_at .append ((s , i , open_delimiter ))
242+ insert_at .append ((e , - i , close_delimiter ))
243+ elif entity .type != MessageEntityType .BLOCKQUOTE and entity .type != MessageEntityType .EXPANDABLE_BLOCKQUOTE :
214244 open_delimiter = delimiter
215245 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 '
222246 insert_at .append ((s , i , open_delimiter ))
223247 insert_at .append ((e , - i , close_delimiter ))
224248 else :
0 commit comments