U
    ShD*                     @  s  U d dl mZ d dlZd dlmZmZmZmZmZm	Z	 d dl
mZ d dlmZ erd dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ dRdddddddZG dd de	ZG dd deddZddddddddZddd d!d"Zdd#d d$d%Zdddd&d'd(Zdddd)d*d+Z ddddd,d-d.Z!d/e"d0ej#d1d2d3gd4e"d5ej$d6d7d3d8e"d9ej$d:d7d3gd;d/e"d<d1d=d3gd4e"d>ej$d?d@d3d8e"dAej$d:d@d3gd;d/e"dBd1dCd3d/e"dDd1dEee dFdGe"dHd1dEee dFgd4e"d>ej$d6d@d3d8e"dAej$dId@d3gd;d/e"dJd1dKd3gd4e"dLej$d6dKd3d8e"dMej$dIdKd3gd;d/e"dNd1dEee dFdGe"dHd1dEee dFgd4e"dLej$d?dKd3d8e"dMej$d:dKd3gd;dOZ%dPe&dQ< dS )S    )annotationsN)TYPE_CHECKINGAnyCallableMatchSequence	TypedDict)
MarkdownIt
charCodeAt)RendererProtocol)
StateBlock)StateInline)Token)EnvTypeOptionsDictdollarsr	   strr   None)md
delimitersmacrosreturnc                   s    pi  |t krt | d D ]L| jjdd t dddddd	d
 fdd}| d | qt | d D ]L| jjdd t dddddd	d
 fdd}| d | qvdS )a7  Plugin ported from
    `markdown-it-texmath <https://github.com/goessner/markdown-it-texmath>`__.

    It parses TeX math equations set inside opening and closing delimiters:

    .. code-block:: md

        $\alpha = \frac{1}{2}$

    :param delimiters: one of: brackets, dollars, gitlab, julia, kramdown

    inlineescapenamer   zSequence[Token]intr   r   r   )selftokensidxoptionsenvr   c                   s   d  t|| jd S )NtmplF)formatrendercontentr   r   r   r    r!   )r   rule_inline P/root/rtd-docs/venv/lib/python3.8/site-packages/mdit_py_plugins/texmath/index.pyrender_math_inline(   s    z*texmath_plugin.<locals>.render_math_inlineblockZfencec                   s$   d  t|| jd || jS )Nr"   T)r#   r$   r%   infor&   )r   
rule_blockr(   r)   render_math_block:   s     z)texmath_plugin.<locals>.render_math_blockN)rulesr   Zrulerbeforemake_inline_funcZadd_render_ruler+   make_block_func)r   r   r   r*   r.   r(   )r   r-   r'   r)   texmath_plugin   s$        r3   c                   @  s.   e Zd ZU ded< ded< ded< ded< dS )_RuleDictReqTyper   r   zre.Pattern[str]rexr"   tagN__name__
__module____qualname____annotations__r(   r(   r(   r)   r4   H   s   
r4   c                   @  s   e Zd ZU ded< ded< dS )RuleDictTyper   prepostNr7   r(   r(   r(   r)   r<   O   s   
r<   F)totalr   boolzNone | Match[str])rulestringbegininBlockquoter   c                 C  s   | | d |r,d| kr(| d ||s0nds0d S | d ||d  }|rV| dkrZd S | | d }d| kr| d ||r|rd|dksd S |S )	Nr6   r=   Tr5   r      r>   
)
startswithmatchstartendgroup)rA   rB   rC   rD   rH   Z	lastIndexr(   r(   r)   	applyRuleU   s,    rL   z#Callable[[StateInline, bool], bool])rA   r   c                   s   dddd fdd}|S )Nr   r@   )statesilentr   c                   sZ   t  | j| jd}|rR|s@|  d dd}|d |_ d |_|  j| 7  _t|S )NFr   mathr   rE   r6   )rL   srcpospushr%   markuprJ   r@   )rM   rN   restokenrA   r(   r)   _funcn   s    

zmake_inline_func.<locals>._funcr(   rA   rW   r(   rV   r)   r1   m   s    r1   z,Callable[[StateBlock, int, int, bool], bool]c                   s   dddddd fdd}|S )Nr   r   r@   )rM   begLineendLinerN   r   c           	        s   | j | | j|  }t | j|| jdk}|r|sp|  d dd}d|_|d |_|t|	  |_
 d |_|}||  d }||k r|| j | kr|| j| kr|d | _q|d7 }qt|S )NZ
blockquoter   rO   r   TrE   r6   )ZbMarksZtShiftrL   rP   Z
parentTyperR   r+   r%   lengroupsr,   rS   rJ   ZeMarksliner@   )	rM   rY   rZ   rN   rC   rT   rU   r]   endposrV   r(   r)   rW   ~   s"    



zmake_block_func.<locals>._funcr(   rX   r(   rV   r)   r2   }   s    r2   )rP   begr   c                 C  s<   |dkrt | |d  dnd}| p:|dko:|dk p:|dkS )Nr   rE   F\   0   9   r
   )rP   r_   Zprvr(   r(   r)   
dollar_pre   s    rc   )rP   rJ   r   c                 C  sP   z"| |d  ot | |d  d}W n tk
r8   Y dS X | pN|dk pN|dkS )NrE   r   Tra   rb   )r   
IndexError)rP   rJ   Znxtr(   r(   r)   dollar_post   s    "re   )texdisplayModer   r   c                 C  s   | S )Nr(   )rf   rg   r   r(   r(   r)   r$      s    r$   Zmath_inlinez^\\\((.+?)\\\)z<eq>{0}</eq>z\()r   r5   r"   r6   Zmath_block_eqnoz7^\\\[(((?!\\\]|\\\[)[\s\S])+?)\\\]\s*?\(([^)$\r\n]+?)\)z@<section class="eqno"><eqn>{0}</eqn><span>({1})</span></section>z\[Z
math_blockz^\\\[([\s\S]+?)\\\]z$<section>
<eqn>{0}</eqn>
</section>
)r   r+   z^\$`(.+?)`\$z$`z2^`{3}math\s+?([^`]+?)\s+?`{3}\s*?\(([^)$\r\n]+?)\)zC<section class="eqno">
<eqn>{0}</eqn><span>({1})</span>
</section>
z```mathz^`{3}math\s+?([^`]+?)\s+?`{3}z^`{2}([^`]+?)`{2}z``z^\$(\S[^$\r\n]*?[^\s\\]{1}?)\$$)r   r5   r"   r6   r=   r>   Zmath_singlez^\$([^$\s\\]{1}?)\$z!<section><eqn>{0}</eqn></section>z^\${2}([^$\r\n]*?)\${2}z$$z(^\${2}([^$]*?)\${2}\s*?\(([^)$\r\n]+?)\)z^\${2}([^$]*?)\${2}z^\$(\S[^$]*?[^\s\\]{1}?)\$)ZbracketsZgitlabjuliaZkramdownr   z(dict[str, dict[str, list[RuleDictType]]]r/   )r   N)'
__future__r   retypingr   r   r   r   r   r   Zmarkdown_itr	   Zmarkdown_it.common.utilsr   Zmarkdown_it.rendererr   Zmarkdown_it.rules_blockr   Zmarkdown_it.rules_inliner   Zmarkdown_it.tokenr   Zmarkdown_it.utilsr   r   r3   r4   r<   rL   r1   r2   rc   re   r$   compileDOTALLMr/   r;   r(   r(   r(   r)   <module>   s"       7

 	
 		 	-
	