o
    -˜Žj(-  ã                   @   sä   d dl Z d dlZd dlmZ d dlZd dlmZ ddlmZ ddl m	Z	 dZ
dZd	Zd
ZdZdZdZdZdZe djd dd„ dd„ eeeeee
efD ƒD ƒ¡d�¡Ze d¡ZdZdZdZdZeegZe d¡ZG dd„ dƒZdS )é    N)ÚOptional)ÚMessageEntityTypeé   )Úutils)ÚHTMLz**Ú__z--z~~z||ú`z```ú>z**>z({d})ú|c                 C   s   g | ]}d   |¡‘qS )Ú )Újoin©Ú.0Úi© r   úU/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pyrogram/parser/markdown.pyÚ
<listcomp>)   ó    r   c                 C   s   g | ]	}d d„ |D ƒ‘qS )c                 S   s   g | ]}d |› �‘qS )ú\r   )r   Újr   r   r   r   *   r   z<listcomp>.<listcomp>r   r   r   r   r   r   )   s    ÿÿ)Údz(!?)\[(.+?)\]\((.+?)\)z<{}>z</{}>z<a href="{}">{}</a>z<emoji id={}>{}</emoji>z<code>.*?</code>c                   @   sP   e Zd Zded fdd„Zdd„ Zdded	efd
d„Ze	dede
fdd„ƒZdS )ÚMarkdownÚclientzpyrogram.Clientc                 C   s   t |ƒ| _d S ©N)r   Úhtml)Úselfr   r   r   r   Ú__init__A   s   zMarkdown.__init__c              	   C   s\  t  ddt  dd|¡¡}| d¡}g }d}|D ]t}| t¡rJ|s>t  dt d¡|¡}t  d	t d¡|¡}d
}| | ¡ ¡ q| |dd …  ¡ ¡ q| t	¡r{|sot  dt d¡|¡}t  dt d¡|¡}d
}| | ¡ ¡ q| |dd …  ¡ ¡ q|r†t
 d¡| }d}| |¡ q|r©|t|ƒd  t
 d¡ }| t|ƒd ¡ | |¡ d |¡S )Nz\n&gt;ú
>z^&gt;r	   Ú
Fz^> Ú
blockquotez^>Tr   z^\*\*> zblockquote expandablez^\*\*>é   )ÚreÚsubÚsplitÚ
startswithÚBLOCKQUOTE_DELIMÚOPENING_TAGÚformatÚappendÚstripÚBLOCKQUOTE_EXPANDABLE_DELIMÚCLOSING_TAGÚlenÚpopr   )r   ÚtextÚlinesÚresultÚin_blockquoteÚliner   r   r   Úblockquote_parserD   s8   




zMarkdown.blockquote_parserFr.   Ústrictc              	   Ã   sx  �|rt  |¡}|  |¡}tƒ }d}i }tt |¡ƒD ]\}}d|› d�}|||< | ||d¡}qtt 	t
|¡ƒD ] \}}	|	 ¡ \}
}|	 d¡}|	 d¡}|tv rT| }|r[|tvr[q9|tkrbd}n+|tkrid}n$|tkrpd}n|tkrwd	}n|tkr~d
}n|tkr…d}n|tkrŒd}nq9||vrœ| |¡ t |¡}n
| |¡ t |¡}|tkrÑ||v rÑ|| t¡d …  d¡d }|ttƒd … }t ||d|› d�|
¡}q9t ||||
¡}q9tt 	t|¡ƒD ]@\}}	|	 ¡ \}
}|	  ¡ \}}}|	 d¡}|�s|�rt ||t! ||¡|
¡}qâ|�r"|}| "d¡}t ||t# ||¡|
¡}qâqâ| $¡ D ]\}}| ||¡}�q'| j  %|¡I d H S )NFz{CODE_SECTION_Ú}r   r   Úbr   ÚuÚsÚcodeÚpreÚspoilerr   z<pre language="z">útg://emoji?id=)&r   Úescaper3   ÚsetÚ	enumerateÚCODE_TAG_REÚfindallÚreplacer!   ÚfinditerÚMARKDOWN_REÚspanÚgroupÚFIXED_WIDTH_DELIMSÚ
BOLD_DELIMÚITALIC_DELIMÚUNDERLINE_DELIMÚSTRIKE_DELIMÚ
CODE_DELIMÚ	PRE_DELIMÚSPOILER_DELIMÚaddr&   r'   Úremover+   Úfindr#   r,   r   Úreplace_onceÚURL_REÚgroupsÚ
URL_MARKUPÚlstripÚEMOJI_MARKUPÚitemsÚparse)r   r.   r4   ÚdelimsÚis_fixed_widthÚplaceholdersr   Úcode_sectionÚplaceholderÚmatchÚstartÚ_ÚdelimÚfullÚtagÚdelim_and_languageÚlanguageÚis_emojiÚtext_urlÚurlÚemojiÚemoji_idr   r   r   rY   i   sz   €








üzMarkdown.parseÚentitiesc                    s  t jtt jtt jtt jtt j	t
t jtt jtt jtt jti	}t | ¡} g }t|ƒD �]&\}}|j‰|j|j ‰ | |jd¡}|rþ|jt jkr¥t‡ ‡fdd„|D ƒƒ}t‡ ‡fdd„|D ƒƒ}|r�|rx|jrm|› |j› d�}	n|› d�}	d|› �}
n|jr„|› |j› d�}	n|› d�}	d|› �}
n|}	|}
| ˆ||	f¡ | ˆ | |
f¡ q(|jt jkrÇ|jt jkrÇ|}	|}
| ˆ||	f¡ | ˆ | |
f¡ q(| ˆˆ … }| ¡ }t|ƒD ]'\}}ˆtdd„ |d|… D ƒƒ }|jrô| ||tf¡ qÕ| ||tf¡ qÕq(d}d}|jt j k�r|j!}n|jt j"k�rd	|j#j$› �}n|jt j%k�r+d
|j&› �}d}|�rO|�r:| ˆ|df¡ n| ˆ|df¡ | ˆ | d|› d�f¡ q(|j'dd„ d� |�r…| (¡ \}}}t )| |¡�rt|d7 }t )| |¡�si| d|… | | |d…  } |�s[t *| ¡S )av  
        Performs the reverse operation to .parse(), effectively returning
        markdown-like syntax given a normal text and its MessageEntity's.

        :param text: the text to be reconverted into markdown.
        :param entities: list of MessageEntity's applied to the text.
        :return: a markdown-like text representing the combination of both inputs.
        Nc                 3   s`   � | ]+}|j tjkr|jˆ  ko|j|j k n  o+|jˆ   k o)|j|j kn  V  qd S r   )Útyper   Ú
BLOCKQUOTEÚoffsetÚlength©r   Ú
blk_entity©Úer8   r   r   Ú	<genexpr>Õ   s   € "ý üz#Markdown.unparse.<locals>.<genexpr>c                 3   sf   � | ].}|j tjkr|jˆ  ko|j|j k n  o.|jˆ   k o)|j|j kn  o.|jV  qd S r   )rm   r   rn   ro   rp   Ú	collapsedrq   rs   r   r   ru   Û   s   € "ü ÿûz
**>r   c                 s   s   � | ]	}t |ƒd  V  qdS )r   N)r,   )r   Úlr   r   r   ru   þ   s   € Fztg://user?id=r<   Tz![ú[z](ú)c                 S   s   | d | d fS )Nr   r   r   )Útr   r   r   Ú<lambda>  s    z"Markdown.unparse.<locals>.<lambda>)Úkeyr   )+r   ÚBOLDrH   ÚITALICrI   Ú	UNDERLINErJ   ÚSTRIKETHROUGHrK   ÚCODErL   ÚPRErM   rn   r%   ÚEXPANDABLE_BLOCKQUOTEr*   ÚSPOILERrN   r   Úadd_surrogatesr?   ro   rp   Úgetrm   Úanyrf   r(   Ú
splitlinesÚsumrv   Ú	TEXT_LINKri   ÚTEXT_MENTIONÚuserÚidÚCUSTOM_EMOJIÚcustom_emoji_idÚsortr-   Úwithin_surrogateÚremove_surrogates)r.   rl   Ú
delimitersÚ	insert_atr   ÚentityÚ	delimiterÚinside_blockquoteÚis_expandableÚopen_delimiterÚclose_delimiterÚtext_subsetr/   Úline_numra   Ú
line_startri   rg   ÚatÚwhatr   rs   r   Úunparse¶   s–   ÷
ýü

û€ÿö
zMarkdown.unparseN)F)Ú__name__Ú
__module__Ú__qualname__r   r   r3   ÚstrÚboolrY   ÚstaticmethodÚlistr    r   r   r   r   r   @   s    %Mr   )r   r!   Útypingr   ÚpyrogramÚpyrogram.enumsr   r   r   r   rH   rI   rJ   rK   rN   rL   rM   r%   r*   Úcompiler'   r   rD   rS   r&   r+   rU   rW   rG   r@   r   r   r   r   r   Ú<module>   sL   ùþÿÿ

