o
    ^i~1                  	   @   s  d dl Z d dlmZ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mZmZmZmZmZ ddl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
e	 ZdS )    N)AnyDictListMatchMutableMappingOptional   )InlineStateParser)HTML_ATTRIBUTESHTML_TAGNAMEPREVENT_BACKSLASHPUNCTUATION
parse_linkparse_link_labelparse_link_textunescape_char)
escape_urlunikeyz\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***___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d?deddf fddZdee dedefddZdee dedee fddZdededeeeef  dedeeef f
ddZdee dedefd d!Zdee dedefd"d#Zd$edededdfd%d&Zdee dedefd'd(Zdee dedefd)d*Zdee dedefd+d,Zdee dedefd-d.Zdee dedefd/d0Z dededdfd1d2Z!dede"eeef  fd3d4Z#	d@dee ded5ed6ee"e  dee f
d7d8Z$dede"eeef  fd9d:Z%d;ed<e&eef de"eeef  fd=d>Z'  Z(S )A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|<!|<\?)escape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_wrapreturnNc                    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 )parse_)getattr).0nameself P/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/mistune/inline_parser.py
<dictcomp>e   s    z)InlineParser.__init__.<locals>.<dictcomp>)	superr   __init__r&   HARD_LINEBREAKspecificationrulesappend_methods)r-   r&   	__class__r,   r/   r2   [   s   zInlineParser.__init__mstatec                 C   s*   | d}t|}|d|d | S )Nr   texttyperaw)groupr   append_tokenend)r-   r:   r;   r<   r.   r.   r/   parse_escapeg   s   
zInlineParser.parse_escapec                 C   s  |  }|d}|d dk}|r|jr|d|d |S |s-|jr-|d|d |S d }t|j|\}}|d u rIt|j|\}}|d u rId S |d usOJ |d u rU|}|d us[J |t|jkrh|d u rhd S g d}	| 	||||	}
|
rx|
S |t|jk r|j| }|dkrt
|j|d \}}|r| ||||}|| |S n|dkrt|j|d \}}|r|}|r|}|d u rd S |jd	}|sd S t|}||}|r|d
 |dd}| ||||}||d< ||d< || |S d S )Nr   !r<   r=   )r   r$   r%   (r   [	ref_linksurltitle)rH   rI   reflabel)rB   r@   in_imagerA   in_linkr   srcr   lenprecedence_scanr   _InlineParser__parse_link_tokenenvgetr   )r-   r:   r;   posmarkeris_imager<   rK   end_posr5   prec_poscattrspos2tokenlabel2rG   keyrR   r.   r.   r/   r   r   sn   






zInlineParser.parse_linkrV   r<   rZ   c                 C   sJ   |  }||_|rd|_d| ||d}|S d|_d| ||d}|S )NTimager>   childrenrZ   r   )copyrN   rL   renderrM   )r-   rV   r<   rZ   r;   	new_stater\   r.   r.   r/   __parse_link_token   s   zInlineParser.__parse_link_tokenc                 C   sF   | d}| }|jr| || |S |dd }| ||| |S )Nr   r   r@   rB   rM   process_text_add_auto_link)r-   r:   r;   r<   rT   r.   r.   r/   parse_auto_link   s   
zInlineParser.parse_auto_linkc                 C   sN   | d}| }|jr| || |S |dd }d| }| ||| |S )Nr   r   rf   zmailto:rg   )r-   r:   r;   r<   rT   rH   r.   r.   r/   parse_auto_email   s   
zInlineParser.parse_auto_emailrH   c                 C   s&   | dd|dgdt|id d S )Nr   r<   r=   rH   r`   )rA   r   )r-   rH   r<   r;   r.   r.   r/   ri      s   

zInlineParser._add_auto_linkc                 C   sT  |  }|d}t|}|dkr|jr|d|d |S |dkr/|jr/|d|d |S t| }||j|}|sF|d|d |S |  }|j|||  }	| 	|||}
|
r^|
S |
 }|	|_|dkr{d|_| |}|d|d |S |dkrd|_| |}|d	|d |S d|_d|_d	| |dg}|d|d |S )
Nr   r   r<   r=      Tr   )r>   ra   strong)rB   r@   rO   in_emphasisrA   	in_strongEMPHASIS_END_REsearchrN   rP   rb   rc   )r-   r:   r;   rT   rU   mlen_end_rem1rW   r<   rX   rd   ra   r.   r.   r/   parse_emphasis   sP   


zInlineParser.parse_emphasisc           	      C   s   | d}td| d tj}| }||j|}|rL| }| d}|dd}t|	 rB|
drB|drB|dd }|d|d	 |S |d
|d	 |S )Nr   z	(.*?[^`])z(?!`)r   
 rf   r   r=   r<   )r@   recompileSrB   matchrN   replacerO   strip
startswithendswithrA   )	r-   r:   r;   rU   patternrT   m2rW   coder.   r.   r/   parse_codespan!  s   

zInlineParser.parse_codespanc                 C      | ddi | S )Nr>   r"   rA   rB   r-   r:   r;   r.   r.   r/   parse_linebreak7     zInlineParser.parse_linebreakc                 C   r   )Nr>   r#   r   r   r.   r.   r/   parse_softbreak;  r   zInlineParser.parse_softbreakc                 C   sJ   |  }|d}|d|d |drd|_|S |dr#d|_|S )Nr   r!   r=   )z<a z<a>z<A z<A>T)z</a z</a>z</A z</A>F)rB   r@   rA   r~   rM   )r-   r:   r;   rW   htmlr.   r.   r/   parse_inline_html?  s   


zInlineParser.parse_inline_htmlc                 C   s   | d|d d S )Nr<   r=   )rA   )r-   r<   r;   r.   r.   r/   rh   I  s   zInlineParser.process_textc                 C   s   d}|   }|t|jk rO||j|}|sn8| }||kr,|j|| }| || | ||}|sF|d }|j|| }| || n|}|t|jk s|dkr]| |j| |jS |t|jk ro| |j|d  | |jS )Nr   r   )
compile_scrO   rN   rq   startrh   parse_methodtokens)r-   r;   rT   scr:   rW   holenew_posr.   r.   r/   parseL  s.   zInlineParser.parserW   r5   c                 C   s   |d u rg d}|  }| |}||j||}|sd S |j}|s$d S |dd}	| |	g}||j| }
|
s=d S | j|	 }|	 }|j|_||
|}|rU||k rWd S |j| |
  }|
d|d |jD ]}|
| qm|S )N)r   r   r$   r%   prec_ r<   r=   )rB   r   rq   rN   	lastgroupr|   r{   r   r7   rb   rA   r   )r-   r:   r;   rW   r5   mark_posr   rt   r   	rule_namer   funcrd   m2_posraw_textr\   r.   r.   r/   rP   i  s4   



zInlineParser.precedence_scanc                 C   s   |  | |jS N)r   r   )r-   r;   r.   r.   r/   rc     s   
zInlineParser.rendersrR   c                 C   s   |  |}||_| |S r   )	state_clsrN   rc   )r-   r   rR   r;   r.   r.   r/   __call__  s   

zInlineParser.__call__)Fr   ))__name__
__module____qualname__sc_flagr	   r   STD_LINEBREAKr3   r   
AUTO_EMAILINLINE_HTMLr   SPECIFICATIONDEFAULT_RULESboolr2   r   strintrC   r   r   r   r   rQ   rj   rk   ri   ru   r   r   r   r   rh   r   r   rP   rc   r   r   __classcell__r.   r.   r8   r/   r   3   sp    

F

	0
"

&2r   )rx   typingr   r   r   r   r   r   corer	   r
   helpersr   r   r   r   r   r   r   r   utilr   r   ry   PAREN_END_REr   r   rp   r   r.   r.   r.   r/   <module>   s,     	(



