a
    y{Jh                     @  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rhd dlmZ dZdd	d
ddZd	d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strbytes)textreturnc                 C  s
   |  dS Nz	utf-16-le)encoder    r   P/var/www/shaz/venv/lib/python3.9/site-packages/aiogram/utils/text_decorations.pyr      s    r   c                 C  s
   |  dS r   )decoder   r   r   r   r      s    r   c                   @  s@  e Zd ZddddddZd.ddddd	d
Zd/ddddddddZeddddddZedddddZedddddZ	edddddZ
edddddZedddddd Zedddd!d"Zedddd#d$Zedddd%d&Zedddd'd(Zedddd)d*d+Zedddd,d-ZdS )0r   r   r   )entityr   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hv rhttt| |j |dS |j tjkr|jr| j||jdS | j|dS |j tjkrd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   ZBOT_COMMANDURLZMENTIONZPHONE_NUMBERZHASHTAGZCASHTAGZEMAILZBOLDZITALICZCODEZ	UNDERLINEZSTRIKETHROUGHZSPOILERZ
BLOCKQUOTEr
   r   getattrZPREr    pre_languagepreZTEXT_MENTIONaiogram.typesr!   userr#   idZ	TEXT_LINKurlZCUSTOM_EMOJIcustom_emojir$   quote)selfr   r   r!   r+   r   r   r   apply_entity!   sD    
	
zTextDecoration.apply_entityNzOptional[List[MessageEntity]])r   entitiesr   c              	   C  s*   d | t||r"t|dd dn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>]       z(TextDecoration.unparse.<locals>.<lambda>)key)join_unparse_entitiesr   sorted)r0   r   r2   r   r   r   unparseR   s    zTextDecoration.unparser   zList[MessageEntity]zOptional[int]zGenerator[str, None, None])r   r2   r6   lengthr   c           	      #  s    d u rd |pt |}t|D ]\}}|jd  k r8q |jd  krd| t| |jd  V  |jd }|jd |jd   tt fdd||d d  }| |d	| j
||| dV  q  |k r| t| | V  d S )Nr      c                   s   | j d  pdk S )Nr@   r   r5   )er5   r   r   r8   u   r9   z2TextDecoration._unparse_entities.<locals>.<lambda>   r3   )r6   r?   )len	enumerater6   r/   r   r?   listfilterr1   r;   r<   )	r0   r   r2   r6   r?   indexr   startZsub_entitiesr   r5   r   r<   a   s&    
z TextDecoration._unparse_entitiesr   r#   r   c                 C  s   d S r4   r   r0   r   r#   r   r   r   r#      s    zTextDecoration.linkr   r   c                 C  s   d S r4   r   r0   r   r   r   r   bold   s    zTextDecoration.boldc                 C  s   d S r4   r   rL   r   r   r   italic   s    zTextDecoration.italicc                 C  s   d S r4   r   rL   r   r   r   code   s    zTextDecoration.codec                 C  s   d S r4   r   rL   r   r   r   r)      s    zTextDecoration.prer   r    r   c                 C  s   d S r4   r   r0   r   r    r   r   r   r(      s    zTextDecoration.pre_languagec                 C  s   d S r4   r   rL   r   r   r   	underline   s    zTextDecoration.underlinec                 C  s   d S r4   r   rL   r   r   r   strikethrough   s    zTextDecoration.strikethroughc                 C  s   d S r4   r   rL   r   r   r   spoiler   s    zTextDecoration.spoilerc                 C  s   d S r4   r   rL   r   r   r   r/      s    zTextDecoration.quoter   r$   r   c                 C  s   d S r4   r   r0   r   r$   r   r   r   r.      s    zTextDecoration.custom_emojic                 C  s   d S r4   r   rL   r   r   r   
blockquote   s    zTextDecoration.blockquote)N)NN)__name__
__module____qualname__r1   r>   r<   r   r#   rM   rN   rO   r)   r(   rR   rS   rT   r/   r.   rW   r   r   r   r   r       s:   1  r   c                   @  s   e 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ddZdddddZdddddZdddddZddddddZdddddZdddddZdddddZdddddZdddd d!d"Zdddd#d$Zd%S )&r   biusz
tg-spoilerztg-emojirW   r   rI   c                 C  s   d| d| dS )Nz	<a href="">z</a>r   rJ   r   r   r   r#      s    zHtmlDecoration.linkrK   c                 C  s   d| j  d| d| j  dS N<>z</)BOLD_TAGrL   r   r   r   rM      s    zHtmlDecoration.boldc                 C  s   d| j  d| d| j  dS r`   )
ITALIC_TAGrL   r   r   r   rN      s    zHtmlDecoration.italicc                 C  s   d| dS )Nz<code>z</code>r   rL   r   r   r   rO      s    zHtmlDecoration.codec                 C  s   d| dS )Nz<pre>z</pre>r   rL   r   r   r   r)      s    zHtmlDecoration.prerP   c                 C  s   d| d| dS )Nz<pre><code class="language-r_   z</code></pre>r   rQ   r   r   r   r(      s    zHtmlDecoration.pre_languagec                 C  s   d| j  d| d| j  dS r`   )UNDERLINE_TAGrL   r   r   r   rR      s    zHtmlDecoration.underlinec                 C  s   d| j  d| d| j  dS r`   )STRIKETHROUGH_TAGrL   r   r   r   rS      s    zHtmlDecoration.strikethroughc                 C  s   d| j  d| d| j  dS r`   )SPOILER_TAGrL   r   r   r   rT      s    zHtmlDecoration.spoilerc                 C  s   t j|ddS )NF)r/   )htmlescaperL   r   r   r   r/      s    zHtmlDecoration.quoterU   c                 C  s   d| j  d| d| dS )Nra   z emoji-id="r_   z</tg-emoji>)	EMOJI_TAGrV   r   r   r   r.      s    zHtmlDecoration.custom_emojic                 C  s   d| j  d| d| j  dS r`   )BLOCKQUOTE_TAGrL   r   r   r   rW      s    zHtmlDecoration.blockquoteN)rX   rY   rZ   rc   rd   re   rf   rg   rj   rk   r#   rM   rN   rO   r)   r(   rR   rS   rT   r/   r.   rW   r   r   r   r   r      s&   r   c                   @  s   e Zd ZU edZded< ddddddZdddd	d
ZdddddZ	dddddZ
dddddZddddddZdddddZdddddZdddddZdddddZddddddZddddd Zd!S )"r   z([_*\[\]()~`>#+\-=|{}.!\\])zPattern[str]MARKDOWN_QUOTE_PATTERNr   rI   c                 C  s   d| d| dS )N[z]()r   rJ   r   r   r   r#      s    zMarkdownDecoration.linkrK   c                 C  s   d| dS )N*r   rL   r   r   r   rM      s    zMarkdownDecoration.boldc                 C  s   d| dS )Nz_r   rL   r   r   r   rN      s    zMarkdownDecoration.italicc                 C  s   d| dS )N`r   rL   r   r   r   rO      s    zMarkdownDecoration.codec                 C  s   d| dS )Nz```

```r   rL   r   r   r   r)      s    zMarkdownDecoration.prerP   c                 C  s   d| d| dS )Nz```
rq   r   rQ   r   r   r   r(      s    zMarkdownDecoration.pre_languagec                 C  s   d| dS )Nz__r   rL   r   r   r   rR      s    zMarkdownDecoration.underlinec                 C  s   d| dS )N~r   rL   r   r   r   rS      s    z MarkdownDecoration.strikethroughc                 C  s   d| dS )Nz||r   rL   r   r   r   rT      s    zMarkdownDecoration.spoilerc                 C  s   t j| jd|dS )Nz\\\1)patternreplstring)resubrl   rL   r   r   r   r/      s    zMarkdownDecoration.quoterU   c                 C  s   | j |d| dS )Nztg://emoji?id=r"   )r#   rV   r   r   r   r.      s    zMarkdownDecoration.custom_emojic                 C  s   d dd | D S )Nrr   c                 s  s   | ]}d | V  qdS )rb   Nr   ).0liner   r   r   	<genexpr>  r9   z0MarkdownDecoration.blockquote.<locals>.<genexpr>)r;   
splitlinesrL   r   r   r   rW     s    zMarkdownDecoration.blockquoteN)rX   rY   rZ   rw   compilerl   __annotations__r#   rM   rN   rO   r)   r(   rR   rS   rT   r/   r.   rW   r   r   r   r   r      s   
r   )
__future__r   rh   rw   abcr   r   typingr   r   r   r   r	   r
   Zaiogram.enumsr   r*   r   __all__r   r   r   r   r   r   r   r   r   r   r   <module>   s      .(