o
    HEDix                     @  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 er.d dlmZ 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)MessageEntity)HtmlDecorationMarkdownDecorationTextDecorationhtml_decorationmarkdown_decorationc                   @  s   e Zd Zd3ddZd4d5ddZ		d6d7ddZed8ddZed9d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	d=d1d2ZdS )>r   entityr   textstrreturnc                 C  s   |j dv r|S |j dv rttt| |j |dS |j dkr.|jr(| j||jdS | j|dS |j dkrJddlm} t||j	}| j
|d	|j d
S |j dkrZ| j
|tt|jd
S |j dkrg| j||jdS | |S )zk
        Apply single entity to text

        :param entity:
        :param text:
        :return:
        >   urlmentionbot_commandphone_number>   boldcodeitalicspoiler	underlinestrikethrough)valuepre)r   languagetext_mentionr   )Userztg://user?id=r   link	text_linkcustom_emoji)r   custom_emoji_id)typer
   r   getattrr!   pre_languager    aiogram.typesr#   userr%   idr   r'   r(   quote)selfr   r   r#   r-    r1   m/var/www/www-root/data/www/ovozai.pdev.uz/venv/lib/python3.10/site-packages/aiogram/utils/text_decorations.pyapply_entity   s&   







zTextDecoration.apply_entityNentitiesOptional[List[MessageEntity]]c              	   C  s0   d | | ||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)itemr1   r1   r2   <lambda>>   s    z(TextDecoration.unparse.<locals>.<lambda>)key)join_unparse_entities_add_surrogatessorted)r0   r   r4   r1   r1   r2   unparse4   s   zTextDecoration.unparsebytesList[MessageEntity]r9   Optional[int]lengthGenerator[str, None, None]c           	      #  s     d u rd |pt |}t|D ]T\}}|jd  k rq|jd  kr4| | | |jd  V  |jd }|jd |jd   tt fdd||d d  }| |d	| j
||| dV  q |k ry| | | | V  d S d S )Nr      c                   s   | j d  pdk S )NrG   r   r8   )er8   r1   r2   r;   V   s    z2TextDecoration._unparse_entities.<locals>.<lambda>   r6   )r9   rE   )len	enumerater9   r/   _remove_surrogatesrE   listfilterr3   r=   r>   )	r0   r   r4   r9   rE   indexr   startsub_entitiesr1   r8   r2   r>   B   s2    
	z TextDecoration._unparse_entitiesc                 C  
   |  dS Nz	utf-16-le)encoder   r1   r1   r2   r?   d      
zTextDecoration._add_surrogatesc                 C  rR   rS   )decoderU   r1   r1   r2   rL   h   rV   z!TextDecoration._remove_surrogatesr   r%   c                 C     d S r7   r1   r0   r   r%   r1   r1   r2   r%   l      zTextDecoration.linkc                 C  rX   r7   r1   r0   r   r1   r1   r2   r   p   rZ   zTextDecoration.boldc                 C  rX   r7   r1   r[   r1   r1   r2   r   t   rZ   zTextDecoration.italicc                 C  rX   r7   r1   r[   r1   r1   r2   r   x   rZ   zTextDecoration.spoilerc                 C  rX   r7   r1   r[   r1   r1   r2   r   |   rZ   zTextDecoration.codec                 C  rX   r7   r1   r[   r1   r1   r2   r       rZ   zTextDecoration.prer!   c                 C  rX   r7   r1   r0   r   r!   r1   r1   r2   r+      rZ   zTextDecoration.pre_languagec                 C  rX   r7   r1   r[   r1   r1   r2   r      rZ   zTextDecoration.underlinec                 C  rX   r7   r1   r[   r1   r1   r2   r      rZ   zTextDecoration.strikethroughc                 C  rX   r7   r1   r[   r1   r1   r2   r/      rZ   zTextDecoration.quoter(   c                 C  rX   r7   r1   r0   r   r(   r1   r1   r2   r'      rZ   zTextDecoration.custom_emoji)r   r   r   r   r   r   r7   )r   r   r4   r5   r   r   )NN)
r   rB   r4   rC   r9   rD   rE   rD   r   rF   )r   r   )r   rB   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__r3   rA   r>   staticmethodr?   rL   r   r%   r   r   r   r   r    r+   r   r   r/   r'   r1   r1   r1   r2   r      s@    
"r   c                   @  sz   e 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S )"r   r   r   r%   r   c                 C     d| d| dS )Nz	<a href="">z</a>r1   rY   r1   r1   r2   r%         zHtmlDecoration.linkc                 C     d| dS )Nz<b>z</b>r1   r[   r1   r1   r2   r         zHtmlDecoration.boldc                 C  ri   )Nz<i>z</i>r1   r[   r1   r1   r2   r      rj   zHtmlDecoration.italicc                 C  ri   )Nz<span class="tg-spoiler">z</span>r1   r[   r1   r1   r2   r      rj   zHtmlDecoration.spoilerc                 C  ri   )Nz<code>z</code>r1   r[   r1   r1   r2   r      rj   zHtmlDecoration.codec                 C  ri   )Nz<pre>z</pre>r1   r[   r1   r1   r2   r       rj   zHtmlDecoration.prer!   c                 C  rf   )Nz<pre><code class="language-rg   z</code></pre>r1   r\   r1   r1   r2   r+      rh   zHtmlDecoration.pre_languagec                 C  ri   )Nz<u>z</u>r1   r[   r1   r1   r2   r      rj   zHtmlDecoration.underlinec                 C  ri   )Nz<s>z</s>r1   r[   r1   r1   r2   r      rj   zHtmlDecoration.strikethroughc                 C  s   t j|ddS )NF)r/   )htmlescaper[   r1   r1   r2   r/      s   zHtmlDecoration.quoter(   c                 C  rf   )Nz<tg-emoji emoji-id="rg   z</tg-emoji>r1   r]   r1   r1   r2   r'      rh   zHtmlDecoration.custom_emojiNr^   r_   r`   ra   )rb   rc   rd   r%   r   r   r   r   r    r+   r   r   r/   r'   r1   r1   r1   r2   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 S )%r   z([_*\[\]()~`>#+\-=|{}.!\\])zPattern[str]MARKDOWN_QUOTE_PATTERNr   r   r%   r   c                 C  s   d| d| dS )N[z]()r1   rY   r1   r1   r2   r%      rh   zMarkdownDecoration.linkc                 C     d| dS )N*r1   r[   r1   r1   r2   r      rj   zMarkdownDecoration.boldc                 C  rp   )Nz_r1   r[   r1   r1   r2   r      rj   zMarkdownDecoration.italicc                 C  rp   )Nz||r1   r[   r1   r1   r2   r      rj   zMarkdownDecoration.spoilerc                 C  rp   )N`r1   r[   r1   r1   r2   r      rj   zMarkdownDecoration.codec                 C  ri   )Nz```

```r1   r[   r1   r1   r2   r       rj   zMarkdownDecoration.prer!   c                 C  rf   )Nz```
rs   r1   r\   r1   r1   r2   r+      rh   zMarkdownDecoration.pre_languagec                 C  rp   )Nz__r1   r[   r1   r1   r2   r      rj   zMarkdownDecoration.underlinec                 C  rp   )N~r1   r[   r1   r1   r2   r      rj   z MarkdownDecoration.strikethroughc                 C  s   t j| jd|dS )Nz\\\1)patternreplstring)resubrm   r[   r1   r1   r2   r/      rh   zMarkdownDecoration.quoter(   c                 C  s   | j |d| dS )Nztg://emoji?id=r$   )r%   r]   r1   r1   r2   r'      s   zMarkdownDecoration.custom_emojiNr^   r_   r`   ra   )rb   rc   rd   ry   compilerm   __annotations__r%   r   r   r   r   r    r+   r   r   r/   r'   r1   r1   r1   r2   r      s   
 









r   )
__future__r   rk   ry   abcr   r   typingr   r   r   r   r	   r
   r,   r   __all__r   r   r   r   r   r1   r1   r1   r2   <module>   s     	 #%
