
    \j                        d dl mZ d dlmZ d dlmZ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
       G d d             Z G d de      Z G d de      Zy)    )annotations)	dataclass)TYPE_CHECKINGAnyLiteral
NamedTuple   )isMdAsciiPunctisPunctCharisWhiteSpace)	StateBase)Token)EnvType)
MarkdownItT)slotsc                  X    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<   y	)	DelimiterintmarkerlengthtokenendboolopencloseNzbool | Nonelevel)__name__
__module____qualname____annotations__r        O/root/env/lib/python3.12/site-packages/markdown_it/rules_inline/state_inline.pyr   r      s4     K K J 
H JKE;r"   r   c                  ,    e Zd ZU ded<   ded<   ded<   y)Scannedr   can_open	can_closer   r   N)r   r   r   r    r!   r"   r#   r%   r%   &   s    NOKr"   r%   c                  H    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZddZd	dZd
dZddZy)StateInlinec                $   || _         || _        || _        || _        d gt	        |      z  | _        d| _        t	        | j                         | _        d| _        d| _	        d| _
        i | _        g | _        g | _        i | _        d| _        d| _        y )Nr    F)srcenvmdtokenslentokens_metaposposMaxr   pendingpendingLevelcache
delimiters_prev_delimiters	backticksbackticksScanned	linkLevel)selfr,   r.   r-   	outTokenss        r#   __init__zStateInline.__init__-   s     9=Y8O$((m
 &(
 ,. 8: *, % r"   c           	         | j                   j                   d| j                   d| j                   dt	        | j
                         dS )Nz(pos=[z of z	], token=))	__class__r   r2   r3   r0   r/   )r<   s    r#   __repr__zStateInline.__repr__N   sD    ~~&&'TXXJd4;;-yT[[9I8J!M	
r"   c                    t        ddd      }| j                  |_        | j                  |_        | j
                  j                  |       d| _        |S )Ntextr+   r   )r   r4   contentr5   r   r/   append)r<   r   s     r#   pushPendingzStateInline.pushPendingT   sF    fb!$''5!r"   c                &   | j                   r| j                          t        |||      }d}|dk  r4| xj                  dz  c_        | j                  j                         | _        | j                  |_        |dkD  rO| xj                  dz  c_        | j                  j                  | j                         g | _        d| j                  i}| j                  | _        | j                  j                  |       | j                  j                  |       |S )z\Push new token to "stream".
        If pending text exists - flush it as text token
        Nr      r7   )r4   rG   r   r   r8   popr7   rF   r5   r/   r1   )r<   ttypetagnestingr   
token_metas         r#   pushzStateInline.push\   s     <<eS'*
Q;JJ!OJ"33779DOjjQ;JJ!OJ!!((9 DO&8J JJ5!
+r"   c                v   |}| j                   }| j                  |   }|dkD  r| j                  |dz
     nd}||k  r/| j                  |   |k(  r|dz  }||k  r| j                  |   |k(  r||z
  }||k  r| j                  |   nd}t        t        |            xs t	        |      }	t        t        |            xs t	        |      }
t        t        |            }t        t        |            }|xs |
xr |xs |	  }|xs |	xr |xs |
  }|xr |xs | xs |	}|xr |xs | xs |
}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   rI    )r3   r,   r
   ordr   r   r%   )r<   startcanSplitWordr2   maximumr   lastCharcountnextCharisLastPunctCharisNextPunctCharisLastWhiteSpaceisNextWhiteSpaceleft_flankingright_flankingr&   r'   s                    r#   
scanDelimszStateInline.scanDelimsy   sw    ++% +0!)488EAI&Gm 71HC Gm 7 e %('M488C=s(X7P;x;P(X7P;x;P'H6'H6  OM)9)L_$M

  OM)9)L_$M

 ! 
C/CO 	 # 
B.B? 	 xE22r"   N)
r,   strr.   r   r-   r   r=   zlist[Token]returnNone)ra   r`   )ra   r   )rK   r`   rL   r`   rM   zLiteral[-1, 0, 1]ra   r   )rS   r   rT   r   ra   r%   )r   r   r   r>   rB   rG   rO   r_   r!   r"   r#   r)   r)   ,   sD    &-4AL	B
:.3r"   r)   N)
__future__r   dataclassesr   typingr   r   r   r   common.utilsr
   r   r   rulerr   r   r   utilsr   markdown_itr   r   r%   r)   r!   r"   r#   <module>rj      s^    " ! : : D D   &   ,j {3) {3r"   