U
    muf.                  	   @   s  d dl Z d dlmZmZmZmZmZ ddlmZm	Z	 ddl
mZmZmZ ddlmZmZmZmZmZmZmZmZ e dZdZd	e e d
 e d Ze de d e de d e de d e de d e de d e de d dZG dd deZdS )    N)OptionalListDictAnyMatch   )ParserInlineState)escape
escape_urlunikey)PREVENT_BACKSLASHPUNCTUATIONHTML_TAGNAMEHTML_ATTRIBUTESunescape_char
parse_linkparse_link_labelparse_link_textz\s*\)z<[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*><z	\s*/?>|</zc\s*>|<!--(?!>|->)(?:(?!--)[\s\S])+?(?<!-)-->|<\?[\s\S]+?\?>|<![A-Z][\s\S]+?>|<!\[CDATA[\s\S]+?\]\]>z(?:z\\\*|[^\s*])\*(?!\*)z\\_|[^\s_])_(?!_)\bz\\\*|[^\s*])\*\*(?!\*)z\\_|[^\s_])__(?!_)\bz\\\*|[^\s*])\*\*\*(?!\*)z\\_|[^\s_])___(?!_)\b)*_z**__z***Z___c                       sp  e Zd ZdZeZdZdZde d dddd	e	e
eed
de d dZdZd9ed fddZeeedddZeeee dddZdd ZeeedddZeeedddZdd Zeeedd d!Zeeedd"d#Zeeedd$d%Zeeedd&d'Zeeedd(d)Zeed*d+d,Zee e!ee"f  d-d.d/Z#d:eeed1d2d3Z$ed4d5d6Z%d7d8 Z&  Z'S );InlineParserr   z(?:\\| {2,})\n\s*z *\n\s*z(?:\\z)+z`{1,}z$\*{1,3}(?=[^\s*])|\b_{1,3}(?=[^\s_])z!?\[z.<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>z<[A-Za-z][A-Za-z\d.+-]{1,31}:z</?z|<!|<\?)r
   codespanemphasislink	auto_link
auto_emailinline_html	linebreak	softbreakprec_auto_linkprec_inline_html)r
   r   r   r   r   r   r   r    F)	hard_wrapc                    sL   t t   | _|r& j jd< n jd  fdd jD  _d S )Nr    r!   c                    s   i | ]}|t  d | qS )Zparse_)getattr).0nameself 9/tmp/pip-unpacked-wheel-8p1ovdot/mistune/inline_parser.py
<dictcomp>j   s     z)InlineParser.__init__.<locals>.<dictcomp>)	superr   __init__r$   HARD_LINEBREAKspecificationrulesappend_methods)r)   r$   	__class__r(   r+   r.   `   s    
zInlineParser.__init__)mstatereturnc                 C   s*   | d}t|}|d|d | S )Nr   texttyperaw)groupr   append_tokenend)r)   r6   r7   r9   r*   r*   r+   parse_escapen   s    
zInlineParser.parse_escapec                 C   s  |  }|d}|d dk}|r<|jr<|d|d |S |sZ|jrZ|d|d |S d }t|j|\}}|d krt|j|\}}|d krd S |d kr|}|t|jkr|d krd S dddg}	| 	||||	}
|
r|
S |t|jk rj|j| }|dkr8t
|j|d	 \}}|rj| ||||}|| |S n2|d
krjt|j|d	 \}}|rj|}|rj|}|d krxd S |jd}|sd S t|}||}|r|d |dd}| ||||}||d< ||d< || |S d S )Nr   !r9   r:   r   r"   r#   (r   [	ref_linksurltitle)rE   rF   reflabel)r?   r=   in_imager>   in_linkr   srcr   lenprecedence_scanr   _InlineParser__parse_link_tokenenvgetr   )r)   r6   r7   posmarkeris_imager9   rH   end_posr1   prec_poscattrspos2tokenlabel2rD   keyrO   r*   r*   r+   r   w   sf    










zInlineParser.parse_linkc                 C   sH   |  }||_|r,d|_d| ||d}nd|_d| ||d}|S )NTimager;   childrenrW   r   )copyrK   rI   renderrJ   )r)   rS   r9   rW   r7   	new_staterY   r*   r*   r+   Z__parse_link_token   s    zInlineParser.__parse_link_tokenc                 C   sF   | d}| }|jr(| || |S |dd }| ||| |S )Nr   r   r=   r?   rJ   process_text_add_auto_link)r)   r6   r7   r9   rQ   r*   r*   r+   parse_auto_link   s    
zInlineParser.parse_auto_linkc                 C   sN   | d}| }|jr(| || |S |dd }d| }| ||| |S )Nr   r   rb   zmailto:rc   )r)   r6   r7   r9   rQ   rE   r*   r*   r+   parse_auto_email   s    
zInlineParser.parse_auto_emailc                 C   s&   | dd|dgdt|id d S )Nr   r9   r:   rE   r]   )r>   r   )r)   rE   r9   r7   r*   r*   r+   re      s
    

zInlineParser._add_auto_linkc                 C   sR  |  }|d}t|}|dkr<|jr<|d|d |S |dkr^|jr^|d|d |S t| }||j|}|s|d|d |S |  }|j|||  }	| 	|||}
|
r|
S |
 }|	|_|dkrd|_| |}|d|d nZ|dkr d|_| |}|d	|d n.d|_d|_d	| |dg}|d|d |S )
Nr   r   r9   r:      Tr   )r;   r^   strong)r?   r=   rL   Zin_emphasisr>   Z	in_strongEMPHASIS_END_REsearchrK   rM   r_   r`   )r)   r6   r7   rQ   rR   mlenZ_end_rem1rT   r9   rU   ra   r^   r*   r*   r+   parse_emphasis   sN    



zInlineParser.parse_emphasisc                 C   s   | d}td| d tj}| }||j|}|r| }| d}|dd}t|	 r|
dr|dr|dd }|dt|d	 |S |d
|d	 |S d S )Nr   z	(.*?[^`])z(?!`)r   
 rb   r   r:   r9   )r=   recompileSr?   matchrK   replacerL   strip
startswithendswithr>   r
   )r)   r6   r7   rR   patternrQ   rT   coder*   r*   r+   parse_codespan  s    

zInlineParser.parse_codespanc                 C   s   | ddi | S )Nr;   r    r>   r?   r)   r6   r7   r*   r*   r+   parse_linebreak0  s    zInlineParser.parse_linebreakc                 C   s   | ddi | S )Nr;   r!   r|   r}   r*   r*   r+   parse_softbreak4  s    zInlineParser.parse_softbreakc                 C   sH   |  }|d}|d|d |dr4d|_n|drDd|_|S )Nr   r   r:   )z<a z<a>z<A z<A>T)z</a z</a>z</A z</A>F)r?   r=   r>   rw   rJ   )r)   r6   r7   rT   htmlr*   r*   r+   parse_inline_html8  s    


zInlineParser.parse_inline_html)r9   r7   c                 C   s   | d|d d S )Nr9   r:   )r>   )r)   r9   r7   r*   r*   r+   rd   B  s    zInlineParser.process_text)r7   r8   c                 C   s   d}|   }|t|jk r||j|}|s.q| }||krX|j|| }| || | ||}|s|d }|j|| }| || q|}q|dkr| |j| n$|t|jk r| |j|d  | |jS )Nr   r   )
compile_scrL   rK   rk   startrd   Zparse_methodtokens)r)   r7   rQ   scr6   rT   Zholenew_posr*   r*   r+   parseE  s*    zInlineParser.parseN)r6   r7   rT   c                 C   s   |d krddddg}|  }| |}||j||}|s>d S |jdd}| |g}||j| }	|	srd S | j| }
|	 }|j|_|
|	|}|r||k rd S |j| |	  }|
d|d |jD ]}|
| q|S )	Nr   r   r"   r#   Zprec_ r9   r:   )r?   r   rk   rK   	lastgroupru   rt   r   r3   r_   r>   r   )r)   r6   r7   rT   r1   Zmark_posr   rm   Z	rule_namem2funcra   Zm2_posZraw_textrY   r*   r*   r+   rM   b  s.    



zInlineParser.precedence_scan)r7   c                 C   s   |  | |jS N)r   r   )r)   r7   r*   r*   r+   r`     s    
zInlineParser.renderc                 C   s   |  |}||_| |S r   )	state_clsrK   r`   )r)   srO   r7   r*   r*   r+   __call__  s    
zInlineParser.__call__)F)N)(__name__
__module____qualname__Zsc_flagr	   r   ZSTD_LINEBREAKr/   r   
AUTO_EMAILINLINE_HTMLr   ZSPECIFICATIONZDEFAULT_RULESboolr.   r   intr@   r   r   rN   rf   rg   re   rn   r{   r~   r   r   strrd   r   r   r   r   rM   r`   r   __classcell__r*   r*   r4   r+   r   1   sD   

	A1
r   )rq   typingr   r   r   r   r   corer   r	   utilr
   r   r   Zhelpersr   r   r   r   r   r   r   r   rr   ZPAREN_END_REr   r   rj   r   r*   r*   r*   r+   <module>   s*   (

