@@ -418,13 +418,16 @@ def apply_html_entities(text: str, entities: Optional[List], custom_subs: Option
418418 utf16_text = text .encode ("utf-16-le" )
419419 html_text = ""
420420
421- def func (upd_text , subst_type = None , url = None , user = None , custom_emoji_id = None ):
421+ def func (upd_text , subst_type = None , url = None , user = None , custom_emoji_id = None , language = None ):
422422 upd_text = upd_text .decode ("utf-16-le" )
423423 if subst_type == "text_mention" :
424424 subst_type = "text_link"
425425 url = "tg://user?id={0}" .format (user .id )
426426 elif subst_type == "mention" :
427427 url = "https://t.me/{0}" .format (upd_text [1 :])
428+ elif subst_type == "pre" :
429+ if language is not None :
430+ return '<pre><code class="language-{0}">{1}</code></pre>' .format (language , upd_text )
428431 upd_text = upd_text .replace ("&" , "&" ).replace ("<" , "<" ).replace (">" , ">" )
429432 if not subst_type or not _subs .get (subst_type ):
430433 return upd_text
@@ -444,14 +447,16 @@ def func(upd_text, subst_type=None, url=None, user=None, custom_emoji_id=None):
444447 offset = entity .offset
445448
446449 new_string = func (utf16_text [offset * 2 : (offset + entity .length ) * 2 ], subst_type = entity .type ,
447- url = entity .url , user = entity .user , custom_emoji_id = entity .custom_emoji_id )
450+ url = entity .url , user = entity .user , custom_emoji_id = entity .custom_emoji_id ,
451+ language = entity .language )
448452 start_index = len (html_text )
449453 html_text += new_string
450454 offset += entity .length
451455 end_index = len (html_text )
452456 elif entity .offset == offset :
453457 new_string = func (utf16_text [offset * 2 : (offset + entity .length ) * 2 ], subst_type = entity .type ,
454- url = entity .url , user = entity .user , custom_emoji_id = entity .custom_emoji_id )
458+ url = entity .url , user = entity .user , custom_emoji_id = entity .custom_emoji_id ,
459+ language = entity .language )
455460 start_index = len (html_text )
456461 html_text += new_string
457462 end_index = len (html_text )
@@ -463,7 +468,8 @@ def func(upd_text, subst_type=None, url=None, user=None, custom_emoji_id=None):
463468 # And we don't change it).
464469 entity_string = html_text [start_index : end_index ].encode ("utf-16-le" )
465470 formatted_string = func (entity_string , subst_type = entity .type , url = entity .url , user = entity .user ,
466- custom_emoji_id = entity .custom_emoji_id ). \
471+ custom_emoji_id = entity .custom_emoji_id ,
472+ language = entity .language ). \
467473 replace ("&" , "&" ).replace ("<" , "<" ).replace (">" , ">" )
468474 html_text = html_text [:start_index ] + formatted_string + html_text [end_index :]
469475 end_index = len (html_text )
0 commit comments