o
    çûõj|(  ã                   @  sè   d dl mZ d dlZd dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZ erHd dlmZ d d	lmZ d d
lmZ dZddd„Zddd„ZG dd„ deƒZG dd„ deƒZG dd„ deƒZeƒ Zeƒ ZdS )é    )ÚannotationsN)ÚABCÚabstractmethod)ÚdateÚdatetimeÚtime)ÚTYPE_CHECKINGÚcast)ÚMessageEntityType)Úcreate_tg_link)Ú	Generator)ÚPattern)ÚMessageEntity)ÚHtmlDecorationÚMarkdownDecorationÚTextDecorationÚadd_surrogatesÚhtml_decorationÚmarkdown_decorationÚremove_surrogatesÚtextÚstrÚreturnÚbytesc                 C  ó
   |   d¡S ©Nz	utf-16-le)Úencode©r   © r   úQ/opt/steambot/venv/lib/python3.10/site-packages/aiogram/utils/text_decorations.pyr      ó   
r   c                 C  r   r   )Údecoder   r   r   r   r   !   r    r   c                   @  sú   e Zd Zd9dd„Zd:d;dd„Z		d<d=dd„Zed>dd„ƒZed?dd„ƒZed?dd„ƒZ	ed?dd„ƒZ
ed?dd „ƒZed@d"d#„ƒZed?d$d%„ƒZed?d&d'„ƒZed?d(d)„ƒZed?d*d+„ƒZedAd-d.„ƒZed?d/d0„ƒZed?d1d2„ƒZe	d:dBd7d8„ƒZdS )Cr   Úentityr   r   r   r   c              	   C  sH  |j tjtjtjtjtjtjtjhv r|S |j tj	tj
tjtjtjtjtjtjhv r6ttt| |j ƒ|d�ƒS |j tjkrM|jrG| j||jd�S | j|d�S |j tjkrjddlm} t||jƒ}| j|d|j› �d�S |j tjkr{| j|tt|jƒd�S |j tj krŒ| j!|tt|j"ƒd�S |j tj#krŸ| j$|tt%|j&ƒ|j'd�S |  (|¡S )	zk
        Apply single entity to text

        :param entity:
        :param text:
        :return:
        )Úvalue)r#   Úlanguager   )ÚUserztg://user?id=©r#   Úlink)r#   Úcustom_emoji_id)r#   Ú	unix_timeÚdate_time_format))Útyper
   ÚBOT_COMMANDÚURLÚMENTIONÚPHONE_NUMBERÚHASHTAGÚCASHTAGÚEMAILÚBOLDÚITALICÚCODEÚ	UNDERLINEÚSTRIKETHROUGHÚSPOILERÚ
BLOCKQUOTEÚEXPANDABLE_BLOCKQUOTEr	   r   ÚgetattrÚPREr$   Úpre_languageÚpreÚTEXT_MENTIONÚaiogram.typesr%   Úuserr'   ÚidÚ	TEXT_LINKÚurlÚCUSTOM_EMOJIÚcustom_emojir(   Ú	DATE_TIMEÚ	date_timeÚintr)   r*   Úquote)Úselfr"   r   r%   rA   r   r   r   Úapply_entity&   sT   ù
ø
ÿÿ
ý
ý
zTextDecoration.apply_entityNÚentitiesúlist[MessageEntity] | Nonec              	   C  s.   d  |  t|ƒ|rt|dd„ d�¡¡S g ¡¡S )zŒ
        Unparse message entities

        :param text: raw text
        :param entities: Array of MessageEntities
        :return:
        Ú c                 S  s   | j S ©N©Úoffset)Úitemr   r   r   Ú<lambda>i   s    z(TextDecoration.unparse.<locals>.<lambda>)Úkey)ÚjoinÚ_unparse_entitiesr   Úsorted)rK   r   rM   r   r   r   Úunparse^   s   þÿþÿzTextDecoration.unparser   úlist[MessageEntity]rR   ú
int | NoneÚlengthúGenerator[str, None, None]c           	      #  sò   � ˆ d u rd‰ |pt |ƒ}t|ƒD ]S\}}|jd ˆ k rq|jd ˆ kr3|  t|ˆ |jd … ƒ¡V  |jd }|jd |jd  ‰ tt‡ fdd„||d d … ƒƒ}|  |d 	| j
|||ˆ d�¡¡V  qˆ |k rw|  t|ˆ |… ƒ¡V  d S d S )Nr   é   c                   s   | j d ˆ pdk S )Nr^   r   rQ   )ÚerQ   r   r   rT   �   s    z2TextDecoration._unparse_entities.<locals>.<lambda>é   rO   )rR   r\   )ÚlenÚ	enumeraterR   rJ   r   r\   ÚlistÚfilterrL   rV   rW   )	rK   r   rM   rR   r\   Úindexr"   ÚstartÚsub_entitiesr   rQ   r   rW   m   s*   €
ÿþÿz TextDecoration._unparse_entitiesr#   r'   c                 C  ó   d S rP   r   ©rK   r#   r'   r   r   r   r'   ‹   ó   zTextDecoration.linkc                 C  rh   rP   r   ©rK   r#   r   r   r   Úbold�   rj   zTextDecoration.boldc                 C  rh   rP   r   rk   r   r   r   Úitalic“   rj   zTextDecoration.italicc                 C  rh   rP   r   rk   r   r   r   Úcode—   rj   zTextDecoration.codec                 C  rh   rP   r   rk   r   r   r   r>   ›   rj   zTextDecoration.prer$   c                 C  rh   rP   r   ©rK   r#   r$   r   r   r   r=   Ÿ   rj   zTextDecoration.pre_languagec                 C  rh   rP   r   rk   r   r   r   Ú	underline£   rj   zTextDecoration.underlinec                 C  rh   rP   r   rk   r   r   r   Ústrikethrough§   rj   zTextDecoration.strikethroughc                 C  rh   rP   r   rk   r   r   r   Úspoiler«   rj   zTextDecoration.spoilerc                 C  rh   rP   r   rk   r   r   r   rJ   ¯   rj   zTextDecoration.quoter(   c                 C  rh   rP   r   ©rK   r#   r(   r   r   r   rF   ³   rj   zTextDecoration.custom_emojic                 C  rh   rP   r   rk   r   r   r   Ú
blockquote·   rj   zTextDecoration.blockquotec                 C  rh   rP   r   rk   r   r   r   Úexpandable_blockquote»   rj   z$TextDecoration.expandable_blockquoter)   úint | datetimer*   ú
str | Nonec                 C  rh   rP   r   )rK   r#   r)   r*   r   r   r   rH   ¿   s   zTextDecoration.date_time)r"   r   r   r   r   r   rP   )r   r   rM   rN   r   r   )NN)
r   r   rM   rZ   rR   r[   r\   r[   r   r]   ©r#   r   r'   r   r   r   ©r#   r   r   r   ©r#   r   r$   r   r   r   ©r#   r   r(   r   r   r   ©r#   r   r)   rv   r*   rw   r   r   )Ú__name__Ú
__module__Ú__qualname__rL   rY   rW   r   r'   rl   rm   rn   r>   r=   rp   rq   rr   rJ   rF   rt   ru   rH   r   r   r   r   r   %   sF    
8ûür   c                   @  sÚ   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdddœd<dd„Zd=dd„Zd>dd„Zd>dd„Zd>d d!„Zd>d"d#„Zd?d%d&„Zd>d'd(„Zd>d)d*„Zd>d+d,„Zd>d-d.„Zd@d0d1„Zd>d2d3„Zd>d4d5„Z	dAdBd:d;„ZdS )Cr   ÚbÚiÚuÚsrn   r>   Úaz
tg-spoilerztg-emojiztg-timert   N)ÚattrsÚflagsÚtagr   Úcontentr…   údict[str, str] | Noner†   úlist[str] | Noner   c                C  sj   g }|r|  dd„ | ¡ D ƒ¡ |r|  dd„ |D ƒ¡ d |¡}|r'd| }d|› |› d|› d|› d�S )Nc                 s  s$   � | ]\}}|› d |› d�V  qdS )z="ú"Nr   )Ú.0ÚkÚvr   r   r   Ú	<genexpr>à   s   €" z&HtmlDecoration._tag.<locals>.<genexpr>c                 s  s   � | ]}|› V  qd S rP   r   )rŒ   Úflagr   r   r   r�   â   s   € ú ú<ú>z</)ÚextendÚitemsrV   )rK   r‡   rˆ   r…   r†   Úprepared_attrsÚ	attrs_strr   r   r   Ú_tagÖ   s   
zHtmlDecoration._tagr#   r'   c                 C  ó   | j | j|d|id�S )NÚhref©r…   )r˜   ÚLINK_TAGri   r   r   r   r'   ê   ó   zHtmlDecoration.linkc                 C  ó   |   | j|¡S rP   )r˜   ÚBOLD_TAGrk   r   r   r   rl   í   ó   zHtmlDecoration.boldc                 C  rž   rP   )r˜   Ú
ITALIC_TAGrk   r   r   r   rm   ð   r    zHtmlDecoration.italicc                 C  rž   rP   )r˜   ÚCODE_TAGrk   r   r   r   rn   ó   r    zHtmlDecoration.codec                 C  rž   rP   )r˜   ÚPRE_TAGrk   r   r   r   r>   ö   r    zHtmlDecoration.prer$   c              	   C  s&   |   | j| j | j|dd|› �id�¡S )Nr$   z	language-r›   )r˜   r£   r¢   ro   r   r   r   r=   ù   s   þzHtmlDecoration.pre_languagec                 C  rž   rP   )r˜   ÚUNDERLINE_TAGrk   r   r   r   rp   ÿ   r    zHtmlDecoration.underlinec                 C  rž   rP   )r˜   ÚSTRIKETHROUGH_TAGrk   r   r   r   rq     r    zHtmlDecoration.strikethroughc                 C  rž   rP   )r˜   ÚSPOILER_TAGrk   r   r   r   rr     r    zHtmlDecoration.spoilerc                 C  s   t j|dd�S )NF)rJ   )ÚhtmlÚescaperk   r   r   r   rJ     r    zHtmlDecoration.quoter(   c                 C  r™   )Nzemoji-idr›   )r˜   Ú	EMOJI_TAGrs   r   r   r   rF     r�   zHtmlDecoration.custom_emojic                 C  rž   rP   ©r˜   ÚBLOCKQUOTE_TAGrk   r   r   r   rt     r    zHtmlDecoration.blockquotec                 C  s   | j | j|dgd�S )NÚ
expandable)r†   rª   rk   r   r   r   ru     s   z$HtmlDecoration.expandable_blockquoter)   rv   r*   rw   c                 C  s@   t |tƒrt| ¡ ƒ}dt|ƒi}|r||d< | j| j||d�S )NÚunixÚformatr›   )Ú
isinstancer   rI   Ú	timestampr   r˜   ÚDATE_TIME_TAG)rK   r#   r)   r*   Úargsr   r   r   rH     s   
zHtmlDecoration.date_time)
r‡   r   rˆ   r   r…   r‰   r†   rŠ   r   r   rx   ry   rz   r{   rP   r|   )r}   r~   r   rŸ   r¡   r¤   r¥   r¢   r£   rœ   r¦   r©   r±   r«   r˜   r'   rl   rm   rn   r>   r=   rp   rq   rr   rJ   rF   rt   ru   rH   r   r   r   r   r   É   s<    ú












ür   c                   @  s°   e Zd ZU e d¡Zded< d+dd	„Zd,d
d„Zd,dd„Z	d,dd„Z
d,dd„Zd-dd„Zd,dd„Zd,dd„Zd,dd„Zd,dd„Zd.dd„Zd,d d!„Zd,d"d#„Z	$d/d0d)d*„Zd$S )1r   z([_*\[\]()~`>#+\-=|{}.!\\])zPattern[str]ÚMARKDOWN_QUOTE_PATTERNr#   r   r'   r   c                 C  s   d|› d|› d�S )Nú[z](ú)r   ri   r   r   r   r'   '  ó   zMarkdownDecoration.linkc                 C  ó   d|› d�S )NÚ*r   rk   r   r   r   rl   *  ó   zMarkdownDecoration.boldc                 C  r·   )Nz_r   rk   r   r   r   rm   -  r¹   zMarkdownDecoration.italicc                 C  r·   )Nú`r   rk   r   r   r   rn   0  r¹   zMarkdownDecoration.codec                 C  s   d|› d�S )Nz```
ú
```r   rk   r   r   r   r>   3  r¹   zMarkdownDecoration.prer$   c                 C  s   d|› d|› d�S )Nz```Ú
r»   r   ro   r   r   r   r=   6  r¶   zMarkdownDecoration.pre_languagec                 C  r·   )Nz__r   rk   r   r   r   rp   9  r¹   zMarkdownDecoration.underlinec                 C  r·   )Nú~r   rk   r   r   r   rq   <  r¹   z MarkdownDecoration.strikethroughc                 C  r·   )Nú||r   rk   r   r   r   rr   ?  r¹   zMarkdownDecoration.spoilerc                 C  s   t j| jd|d�S )Nz\\\1)ÚpatternÚreplÚstring)ÚreÚsubr³   rk   r   r   r   rJ   B  r¶   zMarkdownDecoration.quoter(   c                 C  s    t d|d�}d| j||d�› �S )NÚemoji)Úemoji_idú!r&   )r   r'   )rK   r#   r(   r'   r   r   r   rF   E  s   zMarkdownDecoration.custom_emojic                 C  s   d  dd„ | ¡ D ƒ¡S )Nr¼   c                 s  ó   � | ]}d |› �V  qdS ©r“   Nr   ©rŒ   Úliner   r   r   r�   J  ó   € z0MarkdownDecoration.blockquote.<locals>.<genexpr>©rV   Ú
splitlinesrk   r   r   r   rt   I  s   zMarkdownDecoration.blockquotec                 C  s   d  dd„ | ¡ D ƒ¡d S )Nr¼   c                 s  rÇ   rÈ   r   rÉ   r   r   r   r�   M  rË   z;MarkdownDecoration.expandable_blockquote.<locals>.<genexpr>r¾   rÌ   rk   r   r   r   ru   L  s   z(MarkdownDecoration.expandable_blockquoteNr)   rv   r*   rw   c                 C  sP   t |tƒrt| ¡ ƒ}dt|ƒi}|r||d< tdi |¤Ž}d| j||d�› �S )Nr­   r®   r   rÆ   )r'   )r   )r¯   r   rI   r°   r   r   r'   )rK   r#   r)   r*   Úlink_paramsr'   r   r   r   rH   O  s   
zMarkdownDecoration.date_timerx   ry   rz   r{   rP   r|   )r}   r~   r   rÂ   Úcompiler³   Ú__annotations__r'   rl   rm   rn   r>   r=   rp   rq   rr   rJ   rF   rt   ru   rH   r   r   r   r   r   $  s"   
 












ür   )r   r   r   r   )r   r   r   r   )Ú
__future__r   r§   rÂ   Úabcr   r   r   r   r   Útypingr   r	   Úaiogram.enumsr
   Úaiogram.utils.linkr   Úcollections.abcr   r   r@   r   Ú__all__r   r   r   r   r   r   r   r   r   r   r   Ú<module>   s*    

 %[<
