
     j|(                       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	 d dl
mZmZ d dlmZ d dlmZ erd dlmZ d d	lmZ 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)datedatetimetime)TYPE_CHECKINGcast)MessageEntityType)create_tg_link)	Generator)Pattern)MessageEntity)HtmlDecorationMarkdownDecorationTextDecorationadd_surrogateshtml_decorationmarkdown_decoration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                  L   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e	 d	 	 	 	 	 	 	 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 |j                   t        jF                  k(  r6| jI                  |t#        tJ        |jL                        |jN                        S | jQ                  |      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)r#   	unix_timedate_time_format))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(   	DATE_TIME	date_timeintr)   r*   quote)selfentityr   r%   rB   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;;+555>>sF$4$45!'!8!8 "   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>i   s
    $++ r   )key)join_unparse_entitiesr   sorted)rL   r   entitiess      r   unparsezTextDecoration.unparse^   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 )Nr^   r   rS   )erT   s    r   rV   z2TextDecoration._unparse_entities.<locals>.<lambda>   s    A1!= r      rP   )rT   length)len	enumeraterT   rK   r   rb   listfilterrN   rX   rY   )	rL   r   r[   rT   rb   indexrM   startsub_entitiess	      `     r   rY   z TextDecoration._unparse_entitiesm   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 rR    rL   r#   r'   s      r   r'   zTextDecoration.link       r   c                     y rR   rk   rL   r#   s     r   boldzTextDecoration.bold   rm   r   c                     y rR   rk   ro   s     r   italiczTextDecoration.italic   rm   r   c                     y rR   rk   ro   s     r   codezTextDecoration.code   rm   r   c                     y rR   rk   ro   s     r   r?   zTextDecoration.pre   rm   r   c                     y rR   rk   rL   r#   r$   s      r   r>   zTextDecoration.pre_language   rm   r   c                     y rR   rk   ro   s     r   	underlinezTextDecoration.underline   rm   r   c                     y rR   rk   ro   s     r   strikethroughzTextDecoration.strikethrough   rm   r   c                     y rR   rk   ro   s     r   spoilerzTextDecoration.spoiler   rm   r   c                     y rR   rk   ro   s     r   rK   zTextDecoration.quote   rm   r   c                     y rR   rk   rL   r#   r(   s      r   rG   zTextDecoration.custom_emoji   rm   r   c                     y rR   rk   ro   s     r   
blockquotezTextDecoration.blockquote   rm   r   c                     y rR   rk   ro   s     r   expandable_blockquotez$TextDecoration.expandable_blockquote   rm   r   c                     y rR   rk   )rL   r#   r)   r*   s       r   rI   zTextDecoration.date_time   s     	r   )rM   r   r   r;   returnr;   rR   )r   r;   r[   zlist[MessageEntity] | Noner   r;   )NN)
r   bytesr[   zlist[MessageEntity]rT   
int | Nonerb   r   r   zGenerator[str, None, None]r#   r;   r'   r;   r   r;   r#   r;   r   r;   r#   r;   r$   r;   r   r;   r#   r;   r(   r;   r   r;   r#   r;   r)   zint | datetimer*   z
str | Noner   r;   )__name__
__module____qualname__rN   r\   rY   r   r'   rp   rr   rt   r?   r>   ry   r{   r}   rK   rG   r   r   rI   rk   r   r   r   r   %   s   6 p
& "!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Z
d	Zd
ZdZdd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ddZ	 d"	 	 	 	 	 	 	 d#dZy)$r   biusrt   r?   az
tg-spoilerztg-emojiztg-timer   N)attrsflagsc                   g }|r&|j                  d |j                         D               |r|j                  d |D               dj                  |      }|rd|z   }d| | d| d| dS )Nc              3  2   K   | ]  \  }}| d | d  yw)z=""Nrk   ).0kvs      r   	<genexpr>z&HtmlDecoration._tag.<locals>.<genexpr>   s      !I41aQCr!A,!Is   c              3  "   K   | ]  }|  	 y wrR   rk   )r   flags     r   r   z&HtmlDecoration._tag.<locals>.<genexpr>   s     !>TF)!>s    <>z</)extenditemsrX   )rL   tagcontentr   r   prepared_attrs	attrs_strs          r   _tagzHtmlDecoration._tag   sv     %'!!!I5;;=!II!!!>!>>HH^,	iI3%	{!G9Bse155r   c                B    | j                  | j                  |d|i      S )Nhrefr   )r   LINK_TAGrl   s      r   r'   zHtmlDecoration.link   s    yyfd^yDDr   c                :    | j                  | j                  |      S rR   )r   BOLD_TAGro   s     r   rp   zHtmlDecoration.bold       yy..r   c                :    | j                  | j                  |      S rR   )r   
ITALIC_TAGro   s     r   rr   zHtmlDecoration.italic   s    yy%00r   c                :    | j                  | j                  |      S rR   )r   CODE_TAGro   s     r   rt   zHtmlDecoration.code   r   r   c                :    | j                  | j                  |      S rR   )r   PRE_TAGro   s     r   r?   zHtmlDecoration.pre   s    yyu--r   c           
     |    | j                  | j                  | j                  | j                  |dd| i            S )Nr$   z	language-r   )r   r   r   rw   s      r   r>   zHtmlDecoration.pre_language   s<    yyLLIIdmmU:8*?U2VIW
 	
r   c                :    | j                  | j                  |      S rR   )r   UNDERLINE_TAGro   s     r   ry   zHtmlDecoration.underline   s    yy++U33r   c                :    | j                  | j                  |      S rR   )r   STRIKETHROUGH_TAGro   s     r   r{   zHtmlDecoration.strikethrough  s    yy//77r   c                :    | j                  | j                  |      S rR   )r   SPOILER_TAGro   s     r   r}   zHtmlDecoration.spoiler  s    yy))511r   c                0    t        j                  |d      S )NF)rK   )htmlescapero   s     r   rK   zHtmlDecoration.quote  s    {{5..r   c                B    | j                  | j                  |d|i      S )Nzemoji-idr   )r   	EMOJI_TAGr   s      r   rG   zHtmlDecoration.custom_emoji  s     yyz?6SyTTr   c                :    | j                  | j                  |      S rR   r   BLOCKQUOTE_TAGro   s     r   r   zHtmlDecoration.blockquote  s    yy,,e44r   c                @    | j                  | j                  |dg      S )N
expandable)r   r   ro   s     r   r   z$HtmlDecoration.expandable_blockquote  s    yy,,eL>yJJr   c                    t        |t              rt        |j                               }dt	        |      i}|r||d<   | j                  | j                  ||      S )Nunixformatr   )
isinstancer   rJ   	timestampr;   r   DATE_TIME_TAG)rL   r#   r)   r*   argss        r   rI   zHtmlDecoration.date_time  sV     i*I//12II'-DNyy++U$y??r   )
r   r;   r   r;   r   zdict[str, str] | Noner   zlist[str] | Noner   r;   r   r   r   r   rR   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   rp   rr   rt   r?   r>   ry   r{   r}   rK   rG   r   r   rI   rk   r   r   r   r      s    HJMHGHKIM!N (,"&66 6
 %6  6 
6(E/1/.
482/U5K (,	@@ "@ %	@
 
@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	 d	 	 	 	 	 	 	 ddZy)r   z([_*\[\]()~`>#+\-=|{}.!\\])zPattern[str]MARKDOWN_QUOTE_PATTERNc                    d| d| dS )N[z]()rk   rl   s      r   r'   zMarkdownDecoration.link'  s    5'D6##r   c                    d| dS )N*rk   ro   s     r   rp   zMarkdownDecoration.bold*      5'|r   c                    d| dS )Nz_rk   ro   s     r   rr   zMarkdownDecoration.italic-  s    UG3r   c                    d| dS )N`rk   ro   s     r   rt   zMarkdownDecoration.code0  r   r   c                    d| dS )Nz```

```rk   ro   s     r   r?   zMarkdownDecoration.pre3  s    ugU##r   c                    d| d| dS )Nz```
r   rk   rw   s      r   r>   zMarkdownDecoration.pre_language6  s    XJbu--r   c                    d| dS )Nz__rk   ro   s     r   ry   zMarkdownDecoration.underline9  s    eWD!!r   c                    d| dS )N~rk   ro   s     r   r{   z MarkdownDecoration.strikethrough<  r   r   c                    d| dS )N||rk   ro   s     r   r}   zMarkdownDecoration.spoiler?  s    E7"~r   c                F    t        j                  | j                  d|      S )Nz\\\1)patternreplstring)resubr   ro   s     r   rK   zMarkdownDecoration.quoteB  s    vvd99PUVVr   c                H    t        d|      }d| j                  ||       S )Nemoji)emoji_id!r&   )r   r'   )rL   r#   r(   r'   s       r   rG   zMarkdownDecoration.custom_emojiE  s)    g@4995t94566r   c                N    dj                  d |j                         D              S )Nr   c              3  &   K   | ]	  }d |   ywr   Nrk   r   lines     r   r   z0MarkdownDecoration.blockquote.<locals>.<genexpr>J       C1TFC   rX   
splitlinesro   s     r   r   zMarkdownDecoration.blockquoteI  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   rk   r   s     r   r   z;MarkdownDecoration.expandable_blockquote.<locals>.<genexpr>M  r   r   r   r   ro   s     r   r   z(MarkdownDecoration.expandable_blockquoteL  s%    yyC0@0@0BCCdJJr   Nc                    t        |t              rt        |j                               }dt	        |      i}|r||d<   t        di |}d| j                  ||       S )Nr   r   r   )r'   )r   )r   r   rJ   r   r;   r   r'   )rL   r#   r)   r*   link_paramsr'   s         r   rI   zMarkdownDecoration.date_timeO  sd     i*I//12Is9~.$4K!44499U9./00r   r   r   r   r   rR   r   )r   r   r   r   compiler   __annotations__r'   rp   rr   rt   r?   r>   ry   r{   r}   rK   rG   r   r   rI   rk   r   r   r   r   $  s    +52::6T+ULU$ $."W7DK (,	11 "1 %	1
 
1r   r   )r   r;   r   r   )r   r   r   r;   )
__future__r   r   r   abcr   r   r   r   r   typingr	   r
   aiogram.enumsr   aiogram.utils.linkr   collections.abcr   r   rA   r   __all__r   r   r   r   r   r   r   rk   r   r   <module>r     s}    "  	 # ) ) & + -)+$$aS aHX@^ X@v91 91x !"(* r   