U
    ;g                     @   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edjddd dd eeeeee
efD D dZdZdZdZeegZG dd dZdS )    N)Optional)MessageEntityType   )utils)HTMLz**__z--z~~z||`z```z({d})|\[(.+?)\]\((.+?)\)|c                 C   s   g | ]}d  |qS ) )join.0i r   X/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/pyrogram/parser/markdown.py
<listcomp>&   s     r   c                 C   s   g | ]}d d |D qS )c                 S   s   g | ]}d | qS )\r   )r   jr   r   r   r   '   s     z<listcomp>.<listcomp>r   r   r   r   r   r   &   s   )dz<{}>z</{}>z<a href="{}">{}</a>c                   @   sD   e Zd Zed dddZdeedddZeee	d	d
dZ
dS )Markdownzpyrogram.Client)clientc                 C   s   t || _d S )N)r   html)selfr   r   r   r   __init__;   s    zMarkdown.__init__F)textstrictc              	      s  |rt |}t }d}ttt|D ]h\}}| \}}| \}	}
}|	d}|	t
krd| }|rr|	t
krrq(|
rt||t||
|}q(|	tkrd}nV|	tkrd}nH|	tkrd}n:|	tkrd}n,|	tkrd}n|	tkrd}n|	tkr(d	}nq(|	|kr||	 t|}n||	 t|}|	tkr|	|kr||td  d
d }|ttd  }t||d| d|}q(t||	||}q(| j |I d H S )NFr   br   uscodepreZspoiler
z<pre language="z">)r   escapeset	enumeraterefinditerMARKDOWN_REspangroupsgroupFIXED_WIDTH_DELIMSr   Zreplace_once
URL_MARKUPformat
BOLD_DELIMITALIC_DELIMUNDERLINE_DELIMSTRIKE_DELIM
CODE_DELIM	PRE_DELIMSPOILER_DELIMaddOPENING_TAGremoveCLOSING_TAGfindsplitlenparse)r   r   r   delimsZis_fixed_widthr   matchstart_delimZtext_urlurlfulltagZdelim_and_languagelanguager   r   r   r<   >   sT    





zMarkdown.parse)r   entitiesc                 C   s  t | } g }|D ]@}|j}|j}||j }|tjkrBt }}n|tjkrVt	 }}n|tj
krjt }}n|tjkr~t }}n|tjkrt }}n|tjkrt|ddpd}	t |	 d}dt }nr|tjkrt }}n^|tjkrt }}nJ|tjkr|j}
d}d|
 d}n&|tjkr|j}d}d|j d}nq|||f |||f qtdd	 tt|d
d	 dd}|D ]&\}}| d | | | |d   } qzt | S )NrE   r
   r!   [z]()z](tg://user?id=c                 S   s   | d S )Nr   r   xr   r   r   <lambda>       z"Markdown.unparse.<locals>.<lambda>c                 S   s   | d d | d fS )Nr   r   r   rI   r   r   r   rK      rL   T)keyreverse) r   Zadd_surrogatestypeoffsetlengthr   ZBOLDr.   ZITALICr/   Z	UNDERLINEr0   ZSTRIKETHROUGHr1   ZCODEr2   ZPREgetattrr3   Z
BLOCKQUOTEZSPOILERr4   Z	TEXT_LINKrB   ZTEXT_MENTIONuseridappendmapsortedr$   Zremove_surrogates)r   rF   Zentities_offsetsentityZentity_typer?   endZ	start_tagZend_tagrE   rB   rS   rP   r   r   r   unparsev   s\    


















	 zMarkdown.unparseN)F)__name__
__module____qualname__r   r   strboolr<   staticmethodlistrZ   r   r   r   r   r   :   s   8r   )r   r%   typingr   ZpyrogramZpyrogram.enumsr   r
   r   r   r.   r/   r0   r1   r4   r2   r3   compiler-   r   r'   r6   r8   r,   r+   r   r   r   r   r   <module>   s@   