o
    tf.                  	   @   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***___c                       s  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d9def fddZdededefddZdededee fddZdd ZdededefddZdededefddZd d! Zdededefd"d#Zdededefd$d%Zdededefd&d'Zdededefd(d)Zdededefd*d+Zd,edefd-d.Zdede e!ee"f  fd/d0Z#d:deded2efd3d4Z$def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 ^/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/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*   r7   r8   r:   r+   r+   r,   parse_escapen   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 rO|}|t|jkr\|d u r\d S g d}	| 	||||	}
|
rl|
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)rF   rG   reflabel)r@   r>   in_imager?   in_linkr   srcr   lenprecedence_scanr   _InlineParser__parse_link_tokenenvgetr   )r*   r7   r8   posmarkeris_imager:   rI   end_posr2   prec_poscattrspos2tokenlabel2rE   keyrP   r+   r+   r,   r   w   sj   






zInlineParser.parse_linkc                 C   sJ   |  }||_|rd|_d| ||d}|S d|_d| ||d}|S )NTimager<   childrenrX   r   )copyrL   rJ   renderrK   )r*   rT   r:   rX   r8   	new_staterZ   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@   rK   process_text_add_auto_link)r*   r7   r8   r:   rR   r+   r+   r,   parse_auto_link   s   
zInlineParser.parse_auto_linkc                 C   sN   | d}| }|jr| || |S |dd }d| }| ||| |S )Nr   r   rc   zmailto:rd   )r*   r7   r8   r:   rR   rF   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   r:   r;   rF   r^   )r?   r   )r*   rF   r:   r8   r+   r+   r,   rf      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<   r_   strong)r@   r>   rM   Zin_emphasisr?   Z	in_strongEMPHASIS_END_REsearchrL   rN   r`   ra   )r*   r7   r8   rR   rS   mlenZ_end_rem1rU   r:   rV   rb   r_   r+   r+   r,   parse_emphasis   sR   


zInlineParser.parse_emphasisc                 C   s   | d}td| d tj}| }||j|}|rN| }| d}|dd}t|	 rB|
drB|drB|dd }|dt|d	 |S |d
|d	 |S )Nr   z	(.*?[^`])z(?!`)r   
 rc   r   r;   r:   )r>   recompileSr@   matchrL   replacerM   strip
startswithendswithr?   r
   )r*   r7   r8   rS   patternrR   rU   coder+   r+   r,   parse_codespan  s   

zInlineParser.parse_codespanc                 C      | ddi | S )Nr<   r!   r?   r@   r*   r7   r8   r+   r+   r,   parse_linebreak0     zInlineParser.parse_linebreakc                 C   r}   )Nr<   r"   r~   r   r+   r+   r,   parse_softbreak4  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)r@   r>   r?   rx   rK   )r*   r7   r8   rU   htmlr+   r+   r,   parse_inline_html8  s   


zInlineParser.parse_inline_htmlr:   c                 C   s   | d|d d S )Nr:   r;   )r?   )r*   r:   r8   r+   r+   r,   re   B  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_scrM   rL   rl   startre   Zparse_methodtokens)r*   r8   rR   scr7   rU   holenew_posr+   r+   r,   parseE  s.   zInlineParser.parseNrU   c                 C   s   |d u rg d}|  }| |}||j||}|sd S |jdd}| |g}||j| }	|	s7d S | j| }
|	 }|j|_|
|	|}|rO||k rQd S |j| |	  }|
d|d |jD ]}|
| qg|S )N)r   r   r#   r$   Zprec_ r:   r;   )r@   r   rl   rL   	lastgrouprv   ru   r   r4   r`   r?   r   )r*   r7   r8   rU   r2   Zmark_posr   rn   Z	rule_namem2funcrb   Zm2_posZraw_textrZ   r+   r+   r,   rN   b  s.   



zInlineParser.precedence_scanc                 C   s   |  | |jS N)r   r   )r*   r8   r+   r+   r,   ra     s   
zInlineParser.renderc                 C   s   |  |}||_| |S r   )	state_clsrL   ra   )r*   srP   r8   r+   r+   r,   __call__  s   

zInlineParser.__call__)Fr   )(__name__
__module____qualname__Zsc_flagr	   r   ZSTD_LINEBREAKr0   r   
AUTO_EMAILINLINE_HTMLr   ZSPECIFICATIONZDEFAULT_RULESboolr/   r   intrA   r   r   rO   rg   rh   rf   ro   r|   r   r   r   strre   r   r   r   r   rN   ra   r   __classcell__r+   r+   r5   r,   r   1   sF    

	A1
r   )rr   typingr   r   r   r   r   corer   r	   utilr
   r   r   helpersr   r   r   r   r   r   r   r   rs   ZPAREN_END_REr   r   rk   r   r+   r+   r+   r,   <module>   s,    (

