U
    Sh                     @  sF   d Z ddlmZ ddlmZmZ ddddd	d
ZdddddZdS )z7Balance paired characters (*, _, etc) in inline tokens.    )annotations   )	DelimiterStateInliner   zlist[Delimiter]None)state
delimitersreturnc                 C  s.  |sdS i }t |}d}d}g }d}||k r*|| }|d || j|jks^||jd krb|}|j}|jppd|_|js|d7 }q$|j|krddddddg||j< ||j |jrdnd|jd   }	|||  d }
|
}|
|	kr||
 }|j|jkr|
||
 d 8 }
q|jr|jdk rd}|js4|jrn|j|j d dkrn|jd dksj|jd dkrnd}|s|
dkr||
d  js||
d  d }nd}||
 | ||< |||
< d|_||_d|_d}d}q|
||
 d 8 }
q|dkr |||j |jrdnd|jpdd  < |d7 }q$dS )	zBFor each opening emphasis-like marker find a matching closing one.Nr   r      FT)lenappendmarkertokenlengthcloseopenend)r   r   ZopenersBottommaximumZ	headerIdxZlastTokenIdxZjumpsZ	closerIdxZcloserZminOpenerIdxZ	openerIdxZnewMinOpenerIdxopenerZ
isOddMatchZlastJump r   Y/root/rtd-docs/venv/lib/python3.8/site-packages/markdown_it/rules_inline/balance_pairs.pyprocessDelimiters   s    






r   )r   r	   c                 C  sX   | j }t| j }t| | j d}||k rT|| }|rJd|krJt| |d  |d7 }q d S )Nr   r   r   )tokens_metar   r   r   )r   r   r   currZ	curr_metar   r   r   
link_pairs~   s    
r   N)__doc__
__future__r   Zstate_inliner   r   r   r   r   r   r   r   <module>   s   w