o
    LDi[                      @  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	 d dl
mZ er8d 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)TYPE_CHECKINGcast)MessageEntityType)	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   j/var/www/www-root/data/www/77.83.87.30/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d3ddZd4d5ddZ		d6d7ddZed8ddZed9ddZed9ddZ	ed9ddZ
ed9dd Zed:d"d#Zed9d$d%Zed9d&d'Zed9d(d)Zed9d*d+Zed;d-d.Zed9d/d0Zed9d1d2ZdS )<r   entityr
   r   r   r   c              	   C  s"  |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 | #|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)$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$   quote)selfr   r   r!   r;   r   r   r   apply_entity$   sH   



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>a   s    z(TextDecoration.unparse.<locals>.<lambda>)key)join_unparse_entitiesr   sorted)rB   r   rD   r   r   r   unparseV   s   zTextDecoration.unparser   list[MessageEntity]rI   
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 )NrU   r   rH   )erH   r   r   rK   y   s    z2TextDecoration._unparse_entities.<locals>.<lambda>   rF   )rI   rS   )len	enumeraterI   rA   r   rS   listfilterrC   rM   rN   )	rB   r   rD   rI   rS   indexr   startsub_entitiesr   rH   r   rN   e   s*   
z TextDecoration._unparse_entitiesr   r#   c                 C     d S rG   r   rB   r   r#   r   r   r   r#         zTextDecoration.linkc                 C  r_   rG   r   rB   r   r   r   r   bold   ra   zTextDecoration.boldc                 C  r_   rG   r   rb   r   r   r   italic   ra   zTextDecoration.italicc                 C  r_   rG   r   rb   r   r   r   code   ra   zTextDecoration.codec                 C  r_   rG   r   rb   r   r   r   r8      ra   zTextDecoration.prer    c                 C  r_   rG   r   rB   r   r    r   r   r   r7      ra   zTextDecoration.pre_languagec                 C  r_   rG   r   rb   r   r   r   	underline   ra   zTextDecoration.underlinec                 C  r_   rG   r   rb   r   r   r   strikethrough   ra   zTextDecoration.strikethroughc                 C  r_   rG   r   rb   r   r   r   spoiler   ra   zTextDecoration.spoilerc                 C  r_   rG   r   rb   r   r   r   rA      ra   zTextDecoration.quoter$   c                 C  r_   rG   r   rB   r   r$   r   r   r   r@      ra   zTextDecoration.custom_emojic                 C  r_   rG   r   rb   r   r   r   
blockquote   ra   zTextDecoration.blockquotec                 C  r_   rG   r   rb   r   r   r   expandable_blockquote   ra   z$TextDecoration.expandable_blockquote)r   r
   r   r   r   r   rG   )r   r   rD   rE   r   r   )NN)
r   r   rD   rQ   rI   rR   rS   rR   r   rT   r   r   r#   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   r$   r   r   r   )__name__
__module____qualname__rC   rP   rN   r   r#   rc   rd   re   r8   r7   rg   rh   ri   rA   r@   rk   rl   r   r   r   r   r   #   s@    
2r   c                   @  s   e Zd ZdZdZdZdZdZdZ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*d&d'Zd(S )-r   biusz
tg-spoilerztg-emojirk   r   r   r#   r   c                 C     d| d| dS )Nz	<a href="">z</a>r   r`   r   r   r   r#         zHtmlDecoration.linkc                 C     d| j  d| d| j  dS N<></)BOLD_TAGrb   r   r   r   rc         zHtmlDecoration.boldc                 C  r{   r|   )
ITALIC_TAGrb   r   r   r   rd      r   zHtmlDecoration.italicc                 C     d| dS )Nz<code>z</code>r   rb   r   r   r   re         zHtmlDecoration.codec                 C  r   )Nz<pre>z</pre>r   rb   r   r   r   r8      r   zHtmlDecoration.prer    c                 C  rx   )Nz<pre><code class="language-ry   z</code></pre>r   rf   r   r   r   r7      rz   zHtmlDecoration.pre_languagec                 C  r{   r|   )UNDERLINE_TAGrb   r   r   r   rg      r   zHtmlDecoration.underlinec                 C  r{   r|   )STRIKETHROUGH_TAGrb   r   r   r   rh      r   zHtmlDecoration.strikethroughc                 C  r{   r|   )SPOILER_TAGrb   r   r   r   ri      r   zHtmlDecoration.spoilerc                 C  s   t j|ddS )NF)rA   )htmlescaperb   r   r   r   rA      s   zHtmlDecoration.quoter$   c              	   C  s"   d| j  d| d| d| j  d	S )Nr}   z emoji-id="ry   r   r~   )	EMOJI_TAGrj   r   r   r   r@      s   "zHtmlDecoration.custom_emojic                 C  r{   r|   BLOCKQUOTE_TAGrb   r   r   r   rk      r   zHtmlDecoration.blockquotec                 C  s   d| j  d| d| j  dS )Nr}   z expandable>r   r~   r   rb   r   r   r   rl      r   z$HtmlDecoration.expandable_blockquoteNrm   rn   ro   rp   )rq   rr   rs   r   r   r   r   r   r   r   r#   rc   rd   re   r8   r7   rg   rh   ri   rA   r@   rk   rl   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$S ))r   z([_*\[\]()~`>#+\-=|{}.!\\])zPattern[str]MARKDOWN_QUOTE_PATTERNr   r   r#   r   c                 C  s   d| d| dS )N[z]()r   r`   r   r   r   r#      rz   zMarkdownDecoration.linkc                 C     d| dS )N*r   rb   r   r   r   rc      r   zMarkdownDecoration.boldc                 C  r   )Nz_r   rb   r   r   r   rd      r   zMarkdownDecoration.italicc                 C  r   )N`r   rb   r   r   r   re      r   zMarkdownDecoration.codec                 C  r   )Nz```

```r   rb   r   r   r   r8      r   zMarkdownDecoration.prer    c                 C  rx   )Nz```
r   r   rf   r   r   r   r7      rz   zMarkdownDecoration.pre_languagec                 C  r   )Nz__r   rb   r   r   r   rg      r   zMarkdownDecoration.underlinec                 C  r   )N~r   rb   r   r   r   rh     r   z MarkdownDecoration.strikethroughc                 C  r   )N||r   rb   r   r   r   ri     r   zMarkdownDecoration.spoilerc                 C  s   t j| jd|dS )Nz\\\1)patternreplstring)resubr   rb   r   r   r   rA     rz   zMarkdownDecoration.quoter$   c                 C  s   d| j |d| d S )N!ztg://emoji?id=r"   )r#   rj   r   r   r   r@   
  s   zMarkdownDecoration.custom_emojic                 C  s   d dd | D S )Nr   c                 s      | ]}d | V  qdS r~   Nr   .0liner   r   r   	<genexpr>      z0MarkdownDecoration.blockquote.<locals>.<genexpr>rM   
splitlinesrb   r   r   r   rk     s   zMarkdownDecoration.blockquotec                 C  s   d dd | D d S )Nr   c                 s  r   r   r   r   r   r   r   r     r   z;MarkdownDecoration.expandable_blockquote.<locals>.<genexpr>r   r   rb   r   r   r   rl     r   z(MarkdownDecoration.expandable_blockquoteNrm   rn   ro   rp   )rq   rr   rs   r   compiler   __annotations__r#   rc   rd   re   r8   r7   rg   rh   ri   rA   r@   rk   rl   r   r   r   r   r      s   
 











r   )r   r   r   r   )r   r   r   r   )
__future__r   r   r   abcr   r   typingr   r   aiogram.enumsr   collections.abcr   r	   r:   r
   __all__r   r   r   r   r   r   r   r   r   r   r   <module>   s&    

 1+
