
    $g                        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dS )    )annotations)
namedtuple)	dataclass)TYPE_CHECKINGAnyLiteral   )DATACLASS_KWARGS)isMdAsciiPunctisPunctCharisWhiteSpace)	StateBase)Token)EnvType)
MarkdownItc                  Z    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        e/var/www/html/netbox-4.1.3/venv/lib/python3.11/site-packages/markdown_it/rules_inline/state_inline.pyr   r      sc          KKK KKK JJJ HHH JJJKKKEr"   r   Scanned)can_open	can_closer   c                  6    e Zd ZddZddZddZddZddZdS ) StateInlinesrcstrmdr   envr   	outTokenslist[Token]returnNonec                ,   || _         || _        || _        || _        d gt	          |          z  | _        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-   s        r#   __init__zStateInline.__init__,   s     9=Y8O$(mm
 &(
 ,. 8: *, % r"   c           	     j    | j         j         d| j         d| j         dt	          | j                   dS )Nz(pos=[z of z	], token=))	__class__r   r6   r7   r4   r3   )r@   s    r#   __repr__zStateInline.__repr__M   s\    ~& M MXM M#';M M9<T[9I9IM M M	
r"   r   c                    t          ddd          }| j        |_        | j        |_        | j                            |           d| _        |S )Ntextr2   r   )r   r8   contentr9   r   r3   append)r@   r   s     r#   pushPendingzStateInline.pushPendingS   sH    fb!$$'5!!!r"   ttypetagnestingLiteral[-1, 0, 1]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      r;   )r8   rJ   r   r   r<   popr;   rI   r9   r3   r5   )r@   rK   rL   rM   r   
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"   startr   canSplitWordr   r$   c                   |}| 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          t          |                    pt	          |          }	t          t          |                    pt	          |          }
t          t          |                    }t          t          |                    }|p|
o|p|	  }|p|	o|p|
  }|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

        r   rP    )r7   r)   r   ordr   r   r$   )r@   rT   rU   r6   maximumr   lastCharcountnextCharisLastPunctCharisNextPunctCharisLastWhiteSpaceisNextWhiteSpaceleft_flankingright_flankingr%   r&   s                    r#   
scanDelimszStateInline.scanDelimsx   s    +% +0!))48EAI&&Gmm 7 71HC Gmm 7 7 e %('MM48C==s(X77P;x;P;P(X77P;x;P;P'H66'H66  OM)9)L_$M

  OM)9)L_$M

  	'$R~+=*Q/H&S->,R?II$H&IxE222r"   N)
r)   r*   r+   r   r,   r   r-   r.   r/   r0   )r/   r*   )r/   r   )rK   r*   rL   r*   rM   rN   r/   r   )rT   r   rU   r   r/   r$   )r   r   r   rA   rE   rJ   rS   rc   r!   r"   r#   r(   r(   +   sy           B
 
 
 
      :.3 .3 .3 .3 .3 .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>rm      sw   " " " " " " " " " " " " ! ! ! ! ! ! . . . . . . . . . . & & & & & & 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"   