
    dd                        d dl mZ d dlmZ d dlmZ 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 dd
lmZ e	rd dlmZ  edi e G d d                      Z edg d          Z G d de          ZdS )    )annotations)
namedtuple)MutableMapping)	dataclass)TYPE_CHECKING   )DATACLASS_KWARGS)isMdAsciiPunctisPunctCharisWhiteSpace)	StateBase)Token)
MarkdownItc                  d    e Zd ZU ded<   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jumptokenendboolopencloseNzbool | Nonelevel)__name__
__module____qualname____annotations__r        Elib/python3.11/site-packages/markdown_it/rules_inline/state_inline.pyr   r      sn          KKK KKK III JJJ HHH JJJKKKEr!   r   Scanned)can_open	can_closer   c                  .    e Zd Zdd	Zd
 Zd Zd Zd ZdS )StateInlinesrcstrmdr   envr   	outTokenslist[Token]c                   || _         || _        || _        || _        d gt	          |          z  | _        d| _        t	          | j                   | _        d| _        d| _	        d| _
        i | _        g | _        g | _        i | _        d| _        d S )Nr    F)r(   r+   r*   tokenslentokens_metaposposMaxr   pendingpendingLevelcache
delimiters_prev_delimiters	backticksbackticksScanned)selfr(   r*   r+   r,   s        r"   __init__zStateInline.__init__4   s     /3fs9~~.E$(mm
 &(
 ,. 8: *, %r!   c           	     j    | j         j         d| j         d| j         dt	          | j                   dS )Nz(pos=[z of z	], token=))	__class__r   r3   r4   r1   r0   )r<   s    r"   __repr__zStateInline.__repr__Q   s\    ~& M MXM M#';M M9<T[9I9IM M M	
r!   c                    t          ddd          }| j        |_        | j        |_        | j                            |           d| _        |S )Ntextr/   r   )r   r5   contentr6   r   r0   append)r<   r   s     r"   pushPendingzStateInline.pushPendingW   sH    fb!$$'5!!!r!   c                   | j         r|                                  t          |||          }d}|dk     r.| xj        dz  c_        | j                                        | _        | j        |_        |dk    r?| xj        dz  c_        | 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      r8   )r5   rF   r   r   r9   popr8   rE   r6   r0   r2   )r<   ttypetagnestingr   
token_metas         r"   pushzStateInline.push_   s     < 	eS'**
Q;;JJ!OJJ"37799DOjQ;;JJ!OJJ!((999 DO&8J J5!!!
+++r!   c                h   |}d}d}| j         }| j        |         }|dk    r| j        |dz
           nd}||k     r-| j        |         |k    r|dz  }||k     r| j        |         |k    ||z
  }	||k     r| j        |         nd}
t          |          pt          t	          |                    }t          |
          pt          t	          |
                    }t          |          }t          |
          }|rd}n|r|s|sd}|rd}n|r|s|sd}|s|o| p|}|o| p|}n|}|}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

        Tr   rH       F)r4   srcCharCoder
   r   chrr   r#   )r<   startcanSplitWordr3   left_flankingright_flankingmaximumr   lastCharcountnextCharisLastPunctCharisNextPunctCharisLastWhiteSpaceisNextWhiteSpacer$   r%   s                    r"   
scanDelimszStateInline.scanDelims|   s    +!%( 38!))4#EAI..Gmm 0 5 ? ?1HC Gmm 0 5 ? ? e -0'MM4#C((t(22Pk#h--6P6P(22Pk#h--6P6P'11'11 	&!MM 	&$ & & % 	'"NN 	'$ ' '!& 	'$R~+=*Q/H&S->,R?II$H&IxE222r!   N)r(   r)   r*   r   r+   r   r,   r-   )r   r   r   r=   rA   rF   rN   r_   r    r!   r"   r'   r'   3   sd        & & & &:
 
 
    :33 33 33 33 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>ri      sk   " " " " " " " " " " " " * * * * * * ! ! ! ! ! !             & & & & & & D D D D D D D D D D             '&&&&&&        < *Y C C C
D
D|3 |3 |3 |3 |3) |3 |3 |3 |3 |3r!   