o
     h                     @  s   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 ddl
mZmZmZ ddlmZ ddlmZ dd	lmZ er@d d
lmZ eddG dd dZedg dZG dd deZdS )    )annotations)
namedtuple)	dataclass)TYPE_CHECKINGAnyLiteral   )isMdAsciiPunctisPunctCharisWhiteSpace)	StateBase)Token)EnvType)
MarkdownItT)slotsc                   @  sJ   e Zd ZU ded< ded< ded< ded< ded< ded< d	Zd
ed< d	S )	DelimiterintmarkerlengthtokenendboolopencloseNzbool | Nonelevel)__name__
__module____qualname____annotations__r    r   r   g/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/markdown_it/rules_inline/state_inline.pyr      s   
 r   Scanned)can_open	can_closer   c                   @  s>   e Zd Zd ddZd!ddZd"ddZd#ddZd$ddZdS )%StateInlinesrcstrmdr   envr   	outTokenslist[Token]returnNonec                 C  st   || _ || _|| _|| _d gt| | _d| _t| j | _d| _d| _	d| _
i | _g | _g | _i | _d| _d| _d S )Nr    F)r%   r(   r'   tokenslentokens_metaposposMaxr   pendingpendingLevelcache
delimiters_prev_delimiters	backticksbackticksScanned	linkLevel)selfr%   r'   r(   r)   r   r   r    __init__+   s    
zStateInline.__init__c                 C  s*   | j j d| j d| j dt| j dS )Nz(pos=[z of z	], token=))	__class__r   r1   r2   r/   r.   )r;   r   r   r    __repr__L   s   
zStateInline.__repr__r   c                 C  s2   t ddd}| j|_| j|_| j| d| _|S )Ntextr-   r   )r   r3   contentr4   r   r.   append)r;   r   r   r   r    pushPendingR   s   zStateInline.pushPendingttypetagnestingLiteral[-1, 0, 1]c                 C  s   | j r|   t|||}d}|dk r |  jd8  _| j | _| j|_|dkr>|  jd7  _| j| j g | _d| ji}| j| _| j	| | j
| |S )z\Push new token to "stream".
        If pending text exists - flush it as text token
        Nr      r6   )r3   rC   r   r   r7   popr6   rB   r4   r.   r0   )r;   rD   rE   rF   r   
token_metar   r   r    pushZ   s"   
zStateInline.pushstartr   canSplitWordr   r!   c                 C  s  |}| j }| j| }|dkr| j|d  nd}||k r1| j| |kr1|d7 }||k r1| j| |ks"|| }||k r>| j| nd}tt|pIt|}	tt|pSt|}
tt|}tt|}|ph|
oh|pg|	  }|pr|	or|pq|
  }|o||p|| p||	}|o|p| p|
}t|||S )a8  
        Scan a sequence of emphasis-like markers, and determine whether
        it can start an emphasis sequence or end an emphasis sequence.

         - start - position to scan from (it should point at a valid marker);
         - canSplitWord - determine if these markers can be found inside a word

        r   rH    )r2   r%   r	   ordr
   r   r!   )r;   rL   rM   r1   maximumr   lastCharcountnextCharisLastPunctCharisNextPunctCharisLastWhiteSpaceisNextWhiteSpaceleft_flankingright_flankingr"   r#   r   r   r    
scanDelimsw   s4   	
zStateInline.scanDelimsN)
r%   r&   r'   r   r(   r   r)   r*   r+   r,   )r+   r&   )r+   r   )rD   r&   rE   r&   rF   rG   r+   r   )rL   r   rM   r   r+   r!   )r   r   r   r<   r?   rC   rK   rZ   r   r   r   r    r$   *   s    

!

r$   N)
__future__r   collectionsr   dataclassesr   typingr   r   r   common.utilsr	   r
   r   rulerr   r   r   utilsr   markdown_itr   r   r!   r$   r   r   r   r    <module>   s    