o
    Zh                     @  s8   d Z ddlmZ ddlmZmZ dddZdddZdS )z7Balance paired characters (*, _, etc) in inline tokens.    )annotations   )	DelimiterStateInlinestater   
delimiterslist[Delimiter]returnNonec                 C  s  |sdS i }t |}d}d}g }d}||k r	|| }|d || j|jks/||jd kr1|}|j}|jp8d|_|jsB|d7 }q|j|vrNg d||j< ||j |jrWdnd|jd   }	|||  d }
|
}|
|	kr||
 }|j|jkr|
||
 d 8 }
qi|jr|jdk rd}|js|jr|j|j d dkr|jd dks|jd dkrd}|s|
dkr||
d  js||
d  d }nd}||
 | ||< |||
< d|_||_d|_d	}d}n|
||
 d 8 }
|
|	ksm|d	kr|||j |jrdnd|jpdd  < |d7 }||k sdS dS )
zBFor each opening emphasis-like marker find a matching closing one.Nr   r   )r   r   r   r   r      FTr   )lenappendmarkertokenlengthcloseopenend)r   r   ZopenersBottommaximumZ	headerIdxZlastTokenIdxZjumpsZ	closerIdxcloserZminOpenerIdxZ	openerIdxZnewMinOpenerIdxopenerZ
isOddMatchZlastJump r   ]/var/www/html/lang_env/lib/python3.10/site-packages/markdown_it/rules_inline/balance_pairs.pyprocessDelimiters   sz   



2
r   c                 C  sb   | j }t| j }t| | j d}||k r/|| }|r%d|v r%t| |d  |d7 }||k sd S d S )Nr   r   r   )tokens_metar   r   r   )r   r   r   currZ	curr_metar   r   r   
link_pairs~   s   
r   N)r   r   r   r   r	   r
   )r   r   r	   r
   )__doc__
__future__r   Zstate_inliner   r   r   r   r   r   r   r   <module>   s
    
w