
    ,h                        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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i e G d d             Z edg d      Z G d de      Zy)    )annotations)
namedtuple)	dataclass)TYPE_CHECKINGAnyLiteral   )DATACLASS_KWARGS)isMdAsciiPunctisPunctCharisWhiteSpace)	StateBase)Token)EnvType)
MarkdownItc                  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        g/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/markdown_it/rules_inline/state_inline.pyr   r      s4     K K J 
H JKE;r"   r   Scanned)can_open	can_closer   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   r1   r2   r/   r.   )r;   s    r#   __repr__zStateInline.__repr__M   sD    ~~&&'TXXJd4;;-yT[[9I8J!M	
r"   c                    t        ddd      }| j                  |_        | j                  |_        | j
                  j                  |       d| _        |S )Ntextr*   r   )r   r3   contentr4   r   r.   append)r;   r   s     r#   pushPendingzStateInline.pushPendingS   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      r6   )r3   rF   r   r   r7   popr6   rE   r4   r.   r0   )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                t   |}| 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 |
  }|s|xr | xs |	}|xr | xs |
}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

        r   rH    )r2   r+   r   ordr   r   r$   )r;   startcanSplitWordr1   maximumr   lastCharcountnextCharisLastPunctCharisNextPunctCharisLastWhiteSpaceisNextWhiteSpaceleft_flankingright_flankingr%   r&   s                    r#   
scanDelimszStateInline.scanDelimsx   sj    ++% +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

 $R~+=*Q/H&S->,R?I$H&IxE22r"   N)
r+   strr-   r   r,   r   r<   zlist[Token]returnNone)r`   r_   )r`   r   )rJ   r_   rK   r_   rL   zLiteral[-1, 0, 1]r`   r   )rR   r   rS   r   r`   r$   )r   r   r   r=   rA   rF   rN   r^   r!   r"   r#   r(   r(   +   sD    &-4AL	B
:.3r"   r(   Nr!   )
__future__r   collectionsr   dataclassesr   typingr   r   r   _compatr
   common.utilsr   r   r   rulerr   r   r   utilsr   markdown_itr   r   r$   r(   r!   r"   r#   <module>rk      sk    " " ! . . & D D   &   , Y C
D{3) {3r"   