
    g                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  SSK
Jr  SSKJrJrJr  SS	KJr  SS
KJr  \	(       a  S SKJr  \" S0 \D6 " S S5      5       r\" S/ SQ5      r " S S\5      rg)    )annotations)
namedtuple)MutableMapping)	dataclass)TYPE_CHECKING   )DATACLASS_KWARGS)isMdAsciiPunctisPunctCharisWhiteSpace)	StateBase)Token)
MarkdownItc                  j    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   SrS\S'   Srg)	Delimiter   intmarkerlengthjumptokenendboolopencloseNzbool | Nonelevel )__name__
__module____qualname____firstlineno____annotations__r   __static_attributes__r       Elib/python3.13/site-packages/markdown_it/rules_inline/state_inline.pyr   r      s;     K K I J 
H JKE;r$   r   Scanned)can_open	can_closer   c                  F    \ rS rSr        S	S jrS rS rS rS rSr	g)
StateInline3   c                   Xl         X0l        X l        X@l        S /[	        U5      -  U l        SU l        [	        U R                   5      U l        SU l        SU l	        SU l
        0 U l        / U l        / U l        0 U l        SU l        g )Nr    F)srcenvmdtokenslentokens_metaposposMaxr   pendingpendingLevelcache
delimiters_prev_delimiters	backticksbackticksScanned)selfr.   r0   r/   	outTokenss        r%   __init__StateInline.__init__4   s     /3fs9~.E$((m
 &(
 ,. 8: *, %r$   c           	         U R                   R                   SU R                   SU R                   S[	        U R
                  5       S3$ )Nz(pos=[z of z	], token=))	__class__r   r4   r5   r2   r1   )r=   s    r%   __repr__StateInline.__repr__Q   sD    ~~&&'TXXJd4;;-yT[[9I8J!M	
r$   c                    [        SSS5      nU R                  Ul        U R                  Ul        U R
                  R                  U5        SU l        U$ )Ntextr-   r   )r   r6   contentr7   r   r1   append)r=   r   s     r%   pushPendingStateInline.pushPendingW   sF    fb!$''5!r$   c                2   U R                   (       a  U R                  5         [        XU5      nSnUS:  a4  U =R                  S-  sl        U R                  R                  5       U l        U R                  Ul        US:  aO  U =R                  S-  sl        U R                  R                  U R                  5        / U l        SU R                  0nU R                  U l        U R                  R                  U5        U R                  R                  U5        U$ )zLPush new token to "stream".
If pending text exists - flush it as text token
Nr      r9   )r6   rJ   r   r   r:   popr9   rI   r7   r1   r3   )r=   ttypetagnestingr   
token_metas         r%   pushStateInline.push_   s     <<e'*
Q;JJ!OJ"33779DOjjQ;JJ!OJ!!((9 DO&8J JJ5!
+r$   c                   UnSnSnU R                   nU R                  U   nUS:  a  U R                  US-
     OSnX6:  a2  U R                  U   U:X  a  US-  nX6:  a  U R                  U   U:X  a  M  X1-
  n	X6:  a  U R                  U   OSn
[        U5      =(       d    [        [	        U5      5      n[        U
5      =(       d    [        [	        U
5      5      n[        U5      n[        U
5      nU(       a  SnOU(       a  U(       d	  U(       d  SnU(       a  SnOU(       a  U(       d	  U(       d  SnU(       d3  U=(       a    U(       + =(       d    UnU=(       a    U(       + =(       d    UnOUnUn[        UUU	5      $ )a  
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

Tr   rM       F)r5   srcCharCoder
   r   chrr   r&   )r=   startcanSplitWordr4   left_flankingright_flankingmaximumr   lastCharcountnextCharisLastPunctCharisNextPunctCharisLastWhiteSpaceisNextWhiteSpacer'   r(   s                    r%   
scanDelimsStateInline.scanDelims|   sT    ++!!%( 38!)4##EAI.m 0 0 5 ?1HC m 0 0 5 ?  -0M4##C(t(2Pk#h-6P(2Pk#h-6P'1'1!M$ %"N$!&$R~+=*Q/H&S->,R?I$H&IxE22r$   )r:   r;   r<   r8   r9   r/   r   r0   r6   r7   r4   r5   r.   r1   r3   N)r.   strr0   r   r/   r   r>   zlist[Token])
r   r   r    r!   r?   rD   rJ   rS   re   r#   r   r$   r%   r*   r*   3   s;    &&&&-;&HS&:
:33r$   r*   Nr   )
__future__r   collectionsr   collections.abcr   dataclassesr   typingr   _compatr	   common.utilsr
   r   r   rulerr   r   r   markdown_itr   r   r&   r*   r   r$   r%   <module>rq      sh    " " * !   & D D  &   < Y C
D|3) |3r$   