o
    Fh@                      @  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
mZmZmZ d dlmZ er4d 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	GeneratorListOptionalPatterncast)MessageEntityType)MessageEntity)HtmlDecorationMarkdownDecorationTextDecorationhtml_decorationmarkdown_decorationadd_surrogatesremove_surrogatestextstrreturnbytesc                 C  
   |  dS Nz	utf-16-le)encoder    r   Q/var/www/html/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Optional[List[MessageEntity]]c              	   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>^   s    z(TextDecoration.unparse.<locals>.<lambda>)key)join_unparse_entitiesr   sorted)rD   r   rF   r   r   r   unparseS   s   zTextDecoration.unparser   List[MessageEntity]rK   Optional[int]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 )NrW   r   rJ   )erJ   r   r   rM   v   s    z2TextDecoration._unparse_entities.<locals>.<lambda>   rH   )rK   rU   )len	enumeraterK   rC   r   rU   listfilterrE   rO   rP   )	rD   r   rF   rK   rU   indexr    startsub_entitiesr   rJ   r   rP   b   s*   
z TextDecoration._unparse_entitiesr!   r%   c                 C     d S rI   r   rD   r!   r%   r   r   r   r%         zTextDecoration.linkc                 C  ra   rI   r   rD   r!   r   r   r   bold   rc   zTextDecoration.boldc                 C  ra   rI   r   rd   r   r   r   italic   rc   zTextDecoration.italicc                 C  ra   rI   r   rd   r   r   r   code   rc   zTextDecoration.codec                 C  ra   rI   r   rd   r   r   r   r:      rc   zTextDecoration.prer"   c                 C  ra   rI   r   rD   r!   r"   r   r   r   r9      rc   zTextDecoration.pre_languagec                 C  ra   rI   r   rd   r   r   r   	underline   rc   zTextDecoration.underlinec                 C  ra   rI   r   rd   r   r   r   strikethrough   rc   zTextDecoration.strikethroughc                 C  ra   rI   r   rd   r   r   r   spoiler   rc   zTextDecoration.spoilerc                 C  ra   rI   r   rd   r   r   r   rC      rc   zTextDecoration.quoter&   c                 C  ra   rI   r   rD   r!   r&   r   r   r   rB      rc   zTextDecoration.custom_emojic                 C  ra   rI   r   rd   r   r   r   
blockquote   rc   zTextDecoration.blockquotec                 C  ra   rI   r   rd   r   r   r   expandable_blockquote   rc   z$TextDecoration.expandable_blockquote)r    r   r   r   r   r   rI   )r   r   rF   rG   r   r   )NN)
r   r   rF   rS   rK   rT   rU   rT   r   rV   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__rE   rR   rP   r   r%   re   rf   rg   r:   r9   ri   rj   rk   rC   rB   rm   rn   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-emojirm   r!   r   r%   r   c                 C     d| d| dS )Nz	<a href="">z</a>r   rb   r   r   r   r%         zHtmlDecoration.linkc                 C     d| j  d| d| j  dS N<></)BOLD_TAGrd   r   r   r   re         zHtmlDecoration.boldc                 C  r}   r~   )
ITALIC_TAGrd   r   r   r   rf      r   zHtmlDecoration.italicc                 C     d| dS )Nz<code>z</code>r   rd   r   r   r   rg         zHtmlDecoration.codec                 C  r   )Nz<pre>z</pre>r   rd   r   r   r   r:      r   zHtmlDecoration.prer"   c                 C  rz   )Nz<pre><code class="language-r{   z</code></pre>r   rh   r   r   r   r9      r|   zHtmlDecoration.pre_languagec                 C  r}   r~   )UNDERLINE_TAGrd   r   r   r   ri      r   zHtmlDecoration.underlinec                 C  r}   r~   )STRIKETHROUGH_TAGrd   r   r   r   rj      r   zHtmlDecoration.strikethroughc                 C  r}   r~   )SPOILER_TAGrd   r   r   r   rk      r   zHtmlDecoration.spoilerc                 C  s   t j|ddS )NF)rC   )htmlescaperd   r   r   r   rC      s   zHtmlDecoration.quoter&   c              	   C  s"   d| j  d| d| d| j  d	S )Nr   z emoji-id="r{   r   r   )	EMOJI_TAGrl   r   r   r   rB      s   "zHtmlDecoration.custom_emojic                 C  r}   r~   BLOCKQUOTE_TAGrd   r   r   r   rm      r   zHtmlDecoration.blockquotec                 C  s   d| j  d| d| j  dS )Nr   z expandable>r   r   r   rd   r   r   r   rn      r   z$HtmlDecoration.expandable_blockquoteNro   rp   rq   rr   )rs   rt   ru   r   r   r   r   r   r   r   r%   re   rf   rg   r:   r9   ri   rj   rk   rC   rB   rm   rn   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   rb   r   r   r   r%      r|   zMarkdownDecoration.linkc                 C     d| dS )N*r   rd   r   r   r   re      r   zMarkdownDecoration.boldc                 C  r   )Nz_r   rd   r   r   r   rf      r   zMarkdownDecoration.italicc                 C  r   )N`r   rd   r   r   r   rg      r   zMarkdownDecoration.codec                 C  r   )Nz```

```r   rd   r   r   r   r:      r   zMarkdownDecoration.prer"   c                 C  rz   )Nz```
r   r   rh   r   r   r   r9      r|   zMarkdownDecoration.pre_languagec                 C  r   )Nz__r   rd   r   r   r   ri      r   zMarkdownDecoration.underlinec                 C  r   )N~r   rd   r   r   r   rj      r   z MarkdownDecoration.strikethroughc                 C  r   )N||r   rd   r   r   r   rk     r   zMarkdownDecoration.spoilerc                 C  s   t j| jd|dS )Nz\\\1)patternreplstring)resubr   rd   r   r   r   rC     r|   zMarkdownDecoration.quoter&   c                 C  s   d| j |d| d S )N!ztg://emoji?id=r$   )r%   rl   r   r   r   rB     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>rO   
splitlinesrd   r   r   r   rm   
  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   rd   r   r   r   rn     r   z(MarkdownDecoration.expandable_blockquoteNro   rp   rq   rr   )rs   rt   ru   r   compiler   __annotations__r%   re   rf   rg   r:   r9   ri   rj   rk   rC   rB   rm   rn   r   r   r   r   r      s   
 











r   )r   r   r   r   )r   r   r   r   )
__future__r   r   r   abcr   r   typingr   r   r   r   r	   r
   aiogram.enumsr   r<   r   __all__r   r   r   r   r   r   r   r   r   r   r   <module>   s"     

 1+
