
    \js                       U d Z ddlmZ ddlmZ ddlZddl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 erddlmZ  eh d      Zded<   ej0                  d%d       Zeeegef   Z	 de
j8                  fde
j:                  fde
j<                  fde
j>                  fde
j@                  fde
jB                  jD                  fde
jF                  jD                  fde
jH                  fde
jJ                  fde
jL                  fde
jN                  fde
jP                  fgZ)ded<   eegdf   Z*de
jV                  fde
jB                  jX                  fde
jF                  jX                  fd e
jZ                  fgZ.d!ed"<    G d# d$      Z/y)&zTokenizes paragraph content.    )annotations)CallableN)TYPE_CHECKING   )rules_inline)Ruler)StateInline)Token)EnvType)
MarkdownIt>   *_
!#$%&+-:<=>@[\]^`{}~zfrozenset[str]_DEFAULT_TERMINATORSc                     t        j                  dt        j                  dj                  t                    z   dz         S )Nr    r   )recompileescapejoinr$        C/root/env/lib/python3.12/site-packages/markdown_it/parser_inline.py_default_terminator_rer.   8   s.    ::cBIIbgg.B&CDDsJKKr,   textlinkifynewliner)   	backticksstrikethroughemphasislinkimageautolinkhtml_inlineentityz$list[tuple[str, RuleFuncInlineType]]_rulesbalance_pairsfragments_joinz%list[tuple[str, RuleFuncInline2Type]]_rules2c                  H    e Zd ZddZddZd	dZd	dZ	 	 	 	 	 	 	 	 	 	 d
dZy)ParserInlinec                @   t        t                  | _        t        D ]!  \  }}| j                  j	                  ||       # t        t
                  | _        t        D ]!  \  }}| j                  j	                  ||       # t               | _	        t               | _        y )N)r   RuleFuncInlineTyperulerr:   pushRuleFuncInline2Typeruler2r=   set_extra_terminator_charsr.   terminator_re)selfnamerulerule2s       r-   __init__zParserInline.__init__c   s    -.0
  	(JD$JJOOD$'	( /02" 	*KD%KKT5)	*
 25$.D.Fr,   c           	        |t         vr~|| j                  vro| j                  j                  |       t        j                  dt        j
                  dj                  t         | j                  z              z   dz         | _        yyy)aC  Register a character that stops the ``text`` rule, allowing inline rules to fire.

        This lets plugins declare which characters their inline rules react to,
        mirroring the ``MARKER`` mechanism in the Rust markdown-it implementation.

        :param ch: A single character to add to the terminator set.
        r   r&   r   N)r$   rG   addr'   r(   r)   r*   rH   )rI   chs     r-   add_terminator_charz ParserInline.add_terminator_charr   s~     ))b8T8T.T((,,R0!#))GG043O3OOP 	"D /U)r,   c                   d}|j                   }| j                  j                  d      }|j                  j                  d   }|j
                  }||v r||   |_         y|j                  |k  r?|D ]9  }|xj                  dz  c_         ||d      }|xj                  dz  c_        |s9 n n|j                  |_         |s|xj                   dz  c_         |j                   ||<   y)zwSkip single token by running all rules in validation mode;
        returns `True` if any rule reported success
        Fr&   
maxNestingNr   T)posrB   getRulesmdoptionscachelevelposMax)rI   stateokrT   rulesrS   rX   rK   s           r-   	skipTokenzParserInline.skipToken   s     ii

##B'XX%%l3
%<c
EI;;#  q %&q * EIIINIYYc
r,   c                   d}| j                   j                  d      }|j                  }|j                  j                  d   }|j
                  |k  r|j                  |k  r|D ]  } ||d      }|s n |r|j
                  |k\  rnRE|xj                  |j                  |j
                     z  c_        |xj
                  dz  c_        |j
                  |k  r|j                  r|j                          yy)z Generate tokens for input range.Fr&   rS   r   N)
rB   rU   rZ   rV   rW   rT   rY   pendingsrcpushPending)rI   r[   r\   r]   endrS   rK   s          r-   tokenizezParserInline.tokenize   s    

##B'llXX%%l3
ii#o {{Z'! DeU+B
 99#MMUYYuyy11MIINI) ii#o, == r,   c                    t        ||||      }| j                  |       | j                  j                  d      }|D ]
  } ||        |j                  S )z9Process input string and push inline tokens into `tokens`r&   )r	   rd   rE   rU   tokens)rI   ra   rV   envrf   r[   rules2rK   s           r-   parsezParserInline.parse   sT     CS&1e%%b) 	DK	||r,   N)returnNone)rP   strrj   rk   )r[   r	   rj   rk   )
ra   rl   rV   r   rg   r   rf   list[Token]rj   rm   )__name__
__module____qualname__rM   rQ   r^   rd   ri   r+   r,   r-   r?   r?   b   sF    G$(T @		&	-4	>I			r,   r?   )rj   zre.Pattern[str])0__doc__
__future__r   collections.abcr   	functoolsr'   typingr   r&   r   rB   r   rules_inline.state_inliner	   tokenr
   utilsr   markdown_itr   	frozensetr$   __annotations__rX   r.   boolrA   r/   r0   r1   r)   backtickr3   rd   r4   r5   r6   r7   r8   r9   r:   rD   
link_pairspostProcessr<   r=   r?   r+   r,   r-   <module>r      s   " " $  	     2  & (1( n @ L L
 {D1478 
 \$$%$$%|""#,''(l0099:&&//0\l  !&&'L,,-|""#0, ( }d23 l--.l00<<=&&223 |2232	. u ur,   