U
    Sh                     @  s  d dl mZ d dlZd dlmZmZ d dlmZ d dl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mZ dddddZddddddddZddddddddZddddddddZdddddddd d!Zdddddddd"d#ZdS )$    )annotationsN)TYPE_CHECKINGSequence)
MarkdownIt)
escapeHtml)
StateBlock)is_code_block)RendererProtocol)Token)EnvTypeOptionsDictr   None)mdreturnc                 C  s   | j jddtddddddgi | j jdd	tddddddgi | j jdd
tddddddgi | d
t | dt dS )zYParse MyST targets (``(name)=``), blockquotes (``% comment``) and block breaks (``+++``).Z
blockquotemyst_line_commentZaltZ	paragraph	referencelistZfootnote_defhrmyst_block_breakmyst_targetN)	blockZrulerbeforeline_commentblock_breaktargetZadd_render_rulerender_myst_targetrender_myst_line_comment)r    r   T/root/rtd-docs/venv/lib/python3.8/site-packages/mdit_py_plugins/myst_blocks/index.pymyst_block_plugin   s(    r   r   intbool)state	startLineendLinesilentr   c                 C  s  t | |rdS | j| | j|  }| j| }| j| dkr>dS |rFdS | ddd}|dd | j|d	 |  |_d|_	t
|d	 D ]d}||kr q| j| | j|  }| j| }| j| dkr q| jd
| j|d	 |   7  _q|| _||g|_dS )NF%Tr    r   classzmyst-line-comment   
)r   bMarkstShifteMarkssrcpushattrSetrstripcontentmarkup	itertoolscountlinemap)r"   r#   r$   r%   posmaximumtokenZnextLiner   r   r   r   *   s.    


&
r   c           
      C  s   t | |rdS | j| | j|  }| j| }| j| }|d7 }|dkrJdS d}||k r| j| }||krr|dkrrq||kr|d7 }|d7 }qN|dk rdS |rdS |d | _| ddd	}	|	d
d | j||  |	_	|| jg|	_
|| |	_dS )NFr)   +)	    Tr   r   r   r(   z
myst-block)r   r+   r,   r-   r.   r6   r/   r0   stripr2   r7   r3   )
r"   r#   r$   r%   r8   r9   markerZcntchr:   r   r   r   r   M   s6    






r   c                 C  s   t | |rdS | j| | j|  }| j| }| j||  }|dsLdS |dsZdS |dd sjdS |rrdS |d | _| 	ddd	}|
d
d |dd |_|| jg|_dS )NF(z)=r)   Tr   r'   r   r(   myst-target)r   r+   r,   r-   r.   r?   
startswithendswithr6   r/   r0   r2   r7   )r"   r#   r$   r%   r8   r9   textr:   r   r   r   r   w   s&    




r   r	   zSequence[Token]r   r   str)selftokensidxoptionsenvr   c                 C  s2   || j }d}d| d| d}d| d| dS )NrD   z
<a href="#z">(z)=</a>z<div class="z">z</div>)r2   )rI   rJ   rK   rL   rM   label
class_namer   r   r   r   r      s    
r   c                 C  s0   d dd || jdD }dt| dS )Nr*   c                 s  s   | ]}|  V  qd S )N)lstrip).0r6   r   r   r   	<genexpr>   s     z+render_myst_line_comment.<locals>.<genexpr>z<!-- z -->)joinr2   splitr   )rI   rJ   rK   rL   rM   r2   r   r   r   r      s     r   )
__future__r   r4   typingr   r   Zmarkdown_itr   Zmarkdown_it.common.utilsr   Zmarkdown_it.rules_blockr   Zmdit_py_plugins.utilsr   Zmarkdown_it.rendererr	   Zmarkdown_it.tokenr
   Zmarkdown_it.utilsr   r   r   r   r   r   r   r   r   r   r   r   <module>   s    #*