
    h@                         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rd dlmZ dZddZdd	Z G d
 de      Z G d de      Z G d de      Z e       Z e       Zy)    )annotationsN)ABCabstractmethod)TYPE_CHECKING	GeneratorListOptionalPatterncast)MessageEntityType)MessageEntity)HtmlDecorationMarkdownDecorationTextDecorationhtml_decorationmarkdown_decorationadd_surrogatesremove_surrogatesc                $    | j                  d      S Nz	utf-16-le)encodetexts    Q/var/www/html/venv/lib/python3.12/site-packages/aiogram/utils/text_decorations.pyr   r          ;;{##    c                $    | j                  d      S r   )decoder   s    r   r   r      r   r   c                  (   e Zd ZddZdddZ	 	 d	 	 	 	 	 	 	 	 	 ddZedd       Zedd       Zedd       Z	edd       Z
edd	       Zedd
       Zedd       Zedd       Zedd       Zedd       Zedd       Zedd       Zedd       Zy)r   c           	        |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 r+t#        t$         t'        | |j                         |            S |j                   t        j(                  k(  r;|j*                  r| j-                  ||j*                        S | j/                  |      S |j                   t        j0                  k(  r<ddlm} t#        ||j6                        }| j9                  |d|j:                         S |j                   t        j<                  k(  r+| j9                  |t#        t$        |j>                              S |j                   t        j@                  k(  r+| jC                  |t#        t$        |jD                              S | jG                  |      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   strgetattrPREr"   pre_languagepreTEXT_MENTIONaiogram.typesr#   userr%   id	TEXT_LINKurlCUSTOM_EMOJIcustom_emojir&   quote)selfentityr   r#   r>   s        r   apply_entityzTextDecoration.apply_entity!   s    ;;))!!%%**%%%%##
 
 K;;""$$""''++%%((33	
 	
 7WT6;;7dCDD;;+/// ?? !!v!G XXDX)
 ;;+888*fkk*D994dggY.G9HH;;+555994d3

.C9DD;;+888$$4c6KaKaAb$cc zz$r   Nc           	         dj                  | j                  t        |      |rt        |d                   S g             S )z
        Unparse message entities

        :param text: raw text
        :param entities: Array of MessageEntities
        :return:
         c                    | j                   S Noffset)items    r   <lambda>z(TextDecoration.unparse.<locals>.<lambda>^   s
    $++ r   )key)join_unparse_entitiesr   sorted)rE   r   entitiess      r   unparsezTextDecoration.unparseS   sN     ww""t$BJx%=>
 	
 QS
 	
r   c              #  J  K   d|xs t        |      }t        |      D ]  \  }}|j                  dz  k  r|j                  dz  kD  r,| j                  t	        ||j                  dz                |j                  dz  }|j                  dz  |j
                  dz  z   t        t        fd||dz   d              }| j                  |dj                  | j                  |||                    |k  r | j                  t	        ||              y y w)Nr      c                0    | j                   dz  xs dk  S )NrW   r   rL   )erM   s    r   rO   z2TextDecoration._unparse_entities.<locals>.<lambda>v   s    A1!= r      rI   )rM   length)len	enumeraterM   rD   r   r[   listfilterrG   rQ   rR   )	rE   r   rT   rM   r[   indexrF   startsub_entitiess	      `     r   rR   z TextDecoration._unparse_entitiesb   s2     >F$3t9&x0 	ME6}}q 6)}}q 6)jj!24QRAR3S!TUUMMA%E]]Q&)::F=xPQ	?TUL ##..t\%X^._` 	  F?**.tF6/BCDD s   D D#c                     y rK    rE   r!   r%   s      r   r%   zTextDecoration.link       r   c                     y rK   rd   rE   r!   s     r   boldzTextDecoration.bold   rf   r   c                     y rK   rd   rh   s     r   italiczTextDecoration.italic   rf   r   c                     y rK   rd   rh   s     r   codezTextDecoration.code   rf   r   c                     y rK   rd   rh   s     r   r;   zTextDecoration.pre   rf   r   c                     y rK   rd   rE   r!   r"   s      r   r:   zTextDecoration.pre_language   rf   r   c                     y rK   rd   rh   s     r   	underlinezTextDecoration.underline   rf   r   c                     y rK   rd   rh   s     r   strikethroughzTextDecoration.strikethrough   rf   r   c                     y rK   rd   rh   s     r   spoilerzTextDecoration.spoiler   rf   r   c                     y rK   rd   rh   s     r   rD   zTextDecoration.quote   rf   r   c                     y rK   rd   rE   r!   r&   s      r   rC   zTextDecoration.custom_emoji   rf   r   c                     y rK   rd   rh   s     r   
blockquotezTextDecoration.blockquote   rf   r   c                     y rK   rd   rh   s     r   expandable_blockquotez$TextDecoration.expandable_blockquote   rf   r   )rF   r   r   r7   returnr7   rK   )r   r7   rT   zOptional[List[MessageEntity]]r~   r7   )NN)
r   bytesrT   zList[MessageEntity]rM   Optional[int]r[   r   r~   zGenerator[str, None, None]r!   r7   r%   r7   r~   r7   r!   r7   r~   r7   r!   r7   r"   r7   r~   r7   r!   r7   r&   r7   r~   r7   )__name__
__module____qualname__rG   rU   rR   r   r%   ri   rk   rm   r;   r:   rr   rt   rv   rD   rC   r{   r}   rd   r   r   r   r       sT   0 d
& !% $EE &E 	E
 E 
$E<                          r   r   c                      e Zd ZdZdZdZdZdZdZdZ	ddZ
dd	Zdd
ZddZddZddZddZddZddZddZddZddZddZy)r   biusz
tg-spoilerztg-emojir{   c                    d| d| dS )Nz	<a href="">z</a>rd   re   s      r   r%   zHtmlDecoration.link   s    4&5'..r   c                B    d| j                    d| d| j                    dS N<></)BOLD_TAGrh   s     r   ri   zHtmlDecoration.bold   s%    4==/5'DMM?!<<r   c                B    d| j                    d| d| j                    dS r   )
ITALIC_TAGrh   s     r   rk   zHtmlDecoration.italic   s'    4??#1UG2doo->a@@r   c                    d| dS )Nz<code>z</code>rd   rh   s     r   rm   zHtmlDecoration.code   s    wg&&r   c                    d| dS )Nz<pre>z</pre>rd   rh   s     r   r;   zHtmlDecoration.pre   s    ugV$$r   c                    d| d| dS )Nz<pre><code class="language-r   z</code></pre>rd   rp   s      r   r:   zHtmlDecoration.pre_language   s    ,XJb}MMr   c                B    d| j                    d| d| j                    dS r   )UNDERLINE_TAGrh   s     r   rr   zHtmlDecoration.underline   s+    4%%&awb1C1C0DAFFr   c                B    d| j                    d| d| j                    dS r   )STRIKETHROUGH_TAGrh   s     r   rt   zHtmlDecoration.strikethrough   s+    4))*!E7"T5K5K4LANNr   c                B    d| j                    d| d| j                    dS r   )SPOILER_TAGrh   s     r   rv   zHtmlDecoration.spoiler   s+    4##$AeWBt/?/?.@BBr   c                0    t        j                  |d      S )NF)rD   )htmlescaperh   s     r   rD   zHtmlDecoration.quote   s    {{5..r   c           	     H    d| j                    d| d| d| j                    d	S )Nr   z emoji-id="r   r   r   )	EMOJI_TAGry   s      r   rC   zHtmlDecoration.custom_emoji   s/    4>>"+o->br$..IYYZ[[r   c                B    d| j                    d| d| j                    dS r   BLOCKQUOTE_TAGrh   s     r   r{   zHtmlDecoration.blockquote   s+    4&&'qr$2E2E1FaHHr   c                B    d| j                    d| d| j                    dS )Nr   z expandable>r   r   r   rh   s     r   r}   z$HtmlDecoration.expandable_blockquote   s,    4&&'|E7"T=P=P<QQRSSr   Nr   r   r   r   )r   r   r   r   r   r   r   r   r   r   r%   ri   rk   rm   r;   r:   rr   rt   rv   rD   rC   r{   r}   rd   r   r   r   r      so    HJMKI!N/=A'%NGOC/\ITr   r   c                      e Zd ZU  ej                  d      Zded<   ddZddZddZ	ddZ
ddZdd	Zdd
ZddZddZddZddZddZddZy)r   z([_*\[\]()~`>#+\-=|{}.!\\])zPattern[str]MARKDOWN_QUOTE_PATTERNc                    d| d| dS )N[z]()rd   re   s      r   r%   zMarkdownDecoration.link   s    5'D6##r   c                    d| dS )N*rd   rh   s     r   ri   zMarkdownDecoration.bold       5'|r   c                    d| dS )Nz_rd   rh   s     r   rk   zMarkdownDecoration.italic   s    UG3r   c                    d| dS )N`rd   rh   s     r   rm   zMarkdownDecoration.code   r   r   c                    d| dS )Nz```

```rd   rh   s     r   r;   zMarkdownDecoration.pre   s    ugU##r   c                    d| d| dS )Nz```
r   rd   rp   s      r   r:   zMarkdownDecoration.pre_language   s    XJbu--r   c                    d| dS )Nz__rd   rh   s     r   rr   zMarkdownDecoration.underline   s    eWD!!r   c                    d| dS )N~rd   rh   s     r   rt   z MarkdownDecoration.strikethrough   r   r   c                    d| dS )N||rd   rh   s     r   rv   zMarkdownDecoration.spoiler  s    E7"~r   c                F    t        j                  | j                  d|      S )Nz\\\1)patternreplstring)resubr   rh   s     r   rD   zMarkdownDecoration.quote  s    vvd99PUVVr   c                4    d| j                  |d|        S )N!ztg://emoji?id=r$   )r%   ry   s      r   rC   zMarkdownDecoration.custom_emoji  s%    4995?P/Q9RSTTr   c                N    dj                  d |j                         D              S )Nr   c              3  &   K   | ]	  }d |   ywr   Nrd   .0lines     r   	<genexpr>z0MarkdownDecoration.blockquote.<locals>.<genexpr>       C1TFC   rQ   
splitlinesrh   s     r   r{   zMarkdownDecoration.blockquote
  s     yyC0@0@0BCCCr   c                T    dj                  d |j                         D              dz   S )Nr   c              3  &   K   | ]	  }d |   ywr   rd   r   s     r   r   z;MarkdownDecoration.expandable_blockquote.<locals>.<genexpr>  r   r   r   r   rh   s     r   r}   z(MarkdownDecoration.expandable_blockquote  s%    yyC0@0@0BCCdJJr   Nr   r   r   r   )r   r   r   r   compiler   __annotations__r%   ri   rk   rm   r;   r:   rr   rt   rv   rD   rC   r{   r}   rd   r   r   r   r      s^    +52::6T+ULU$ $."WUDKr   r   )r   r7   r~   r   )r   r   r~   r7   )
__future__r   r   r   abcr   r   typingr   r   r   r	   r
   r   aiogram.enumsr   r=   r   __all__r   r   r   r   r   r   r   rd   r   r   <module>r      sq    "  	 # J J ++$$RS Rj.T^ .Tb(K (KV !"(* r   