U
    Shs                     @  s   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ er|d 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ZdddddddddZd S )!    )annotations)TYPE_CHECKINGSequence)
MarkdownIt)
escapeHtmlunescapeAll)
StateBlock)is_code_block)RendererProtocol)Token)EnvTypeOptionsDictr   None)mdreturnc                 C  s2   | j jddtddddddgi | dt d	S )
zThis plugin directly mimics regular fences, but with `:` colons.

    Example::

        :::name
        contained text
        :::

    Zfencecolon_fenceZaltZ	paragraph	referenceZ
blockquotelistZfootnote_defN)blockZrulerbefore_ruleZadd_render_rule_render)r    r   N/root/rtd-docs/venv/lib/python3.8/site-packages/mdit_py_plugins/colon_fence.pycolon_fence_plugin   s    r   r   intbool)state	startLineendLinesilentr   c                 C  s  t | |rdS d}| j| | j|  }| j| }|d |kr@dS | j| }|dkrVdS |}t| ||}|| }	|	dk rzdS | j|| }
| j|| }|rdS |}|d7 }||krqP| j| | j|   }}| j| }||k r| j| | jk rqP| j| |krqt | |rqt| ||}|| |	k r0q| |}||k rFqd}qPq| j| }	||rfdnd | _	| 
ddd}||_| |d ||	d|_|
|_|| j	g|_dS )	NF   :T   r   r   code)r	   ZbMarksZtShiftZeMarkssrc_skipCharsStrZsCountZ	blkIndentZ
skipSpaceslinepushinfoZgetLinescontentmarkupmap)r   r   r   r    ZhaveEndMarkerposmaximummarkerZmemlengthr+   paramsZnextLinetokenr   r   r   r   %   s^    






r   str)r   r-   chr   c                 C  s@   z| j | }W n tk
r&   Y q<Y nX ||kr2q<|d7 }q |S )z*Skip character string from given position.r#   )r%   
IndexError)r   r-   r4   currentr   r   r   r&   |   s    

r&   r
   zSequence[Token]r   r   )selftokensidxoptionsenvr   c           	      C  sb   || }|j rt|j  nd}t|j}d}|r>| d }d|rPd| dnd d | d S )N r   z
<pre><codez class="block-z" >z</code></pre>
)r)   r   stripr   r*   split)	r7   r8   r9   r:   r;   r2   r)   r*   Z
block_namer   r   r   r      s     
r   N)
__future__r   typingr   r   Zmarkdown_itr   Zmarkdown_it.common.utilsr   r   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   <module>   s   W