
    is                    `   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j        d'd            Zeeegef         Z	 de
j        fde
j        fde
j        fde
j        fde
j         fde
j!        j"        fde
j#        j"        fde
j$        fde
j%        fde
j&        fde
j'        fde
j(        fgZ)ded <   eegdf         Z*d!e
j+        fde
j!        j,        fde
j#        j,        fd"e
j-        fgZ.d#ed$<    G d% d&          Z/dS )(zTokenizes paragraph content.    )annotations)CallableN)TYPE_CHECKING   )rules_inline)Ruler)StateInline)Token)EnvType)
MarkdownIt>   
*-<=>[]_{}~!#$%&+:@\^`zfrozenset[str]_DEFAULT_TERMINATORSreturnre.Pattern[str]c                     t          j        dt          j        d                    t                              z   dz             S )Nr    r   )recompileescapejoinr$        `/home/piyush/.hermes/hermes-agent/venv/lib/python3.11/site-packages/markdown_it/parser_inline.py_default_terminator_rer0   8   s3    :cBIbgg.B&C&CDDDsJK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                  6    e Zd ZddZddZdd	Zdd
ZddZdS )ParserInliner%   Nonec                j   t          t                               | _        t          D ] \  }}| j                            ||           !t          t
                               | _        t          D ] \  }}| j                            ||           !t                      | _	        t                      | _        d S )N)r   RuleFuncInlineTyperulerr<   pushRuleFuncInline2Typeruler2r?   set_extra_terminator_charsr0   terminator_re)selfnamerulerule2s       r/   __init__zParserInline.__init__c   s    -.00
  	( 	(JD$JOOD$''''/022" 	* 	*KD%KT5)))) 25$.D.F.Fr.   chstrc           	        |t           vrv|| j        vro| j                            |           t          j        dt          j        d                    t           | j        z                      z   dz             | _        dS dS dS )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$   rJ   addr)   r*   r+   r,   rK   )rL   rQ   s     r/   add_terminator_charz ParserInline.add_terminator_charr   s     )))b8T.T.T(,,R000!#)GG043OOPP  	" "D *).T.Tr.   stater	   c                v   d}|j         }| j                            d          }|j        j        d         }|j        }||v r||         |_         dS |j        |k     r6|D ]2}|xj        dz  c_         ||d          }|xj        dz  c_        |r n3n|j        |_         |s|xj         dz  c_         |j         ||<   dS )zwSkip single token by running all rules in validation mode;
        returns `True` if any rule reported success
        Fr(   
maxNestingNr   T)posrE   getRulesmdoptionscachelevelposMax)rL   rV   okrY   rulesrX   r]   rN   s           r/   	skipTokenzParserInline.skipToken   s     i
##B''X%l3
%<<c
EIF;##   q T%&&q  E EI 	IINIIYc


r.   c                   d}| j                             d          }|j        }|j        j        d         }|j        |k     rj|j        |k     r|D ]} ||d          }|r n|r|j        |k    rn<:|xj        |j        |j                 z  c_        |xj        dz  c_        |j        |k     j|j        r|	                                 dS dS )z Generate tokens for input range.Fr(   rX   r   N)
rE   rZ   r_   r[   r\   rY   r^   pendingsrcpushPending)rL   rV   r`   ra   endrX   rN   s          r/   tokenizezParserInline.tokenize   s    
##B''lX%l3
i#oo {Z''!  DeU++B   9##MMUYuy11MMIINII) i#oo, = 	 	  	 r.   re   r[   r   envr   tokenslist[Token]c                    t          ||||          }|                     |           | j                            d          }|D ]} ||           |j        S )z9Process input string and push inline tokens into `tokens`r(   )r	   rh   rH   rZ   rj   )rL   re   r[   ri   rj   rV   rules2rN   s           r/   parsezParserInline.parse   sd     CS&11e%%b)) 	 	DDKKKK|r.   N)r%   rB   )rQ   rR   r%   rB   )rV   r	   r%   rB   )
re   rR   r[   r   ri   r   rj   rk   r%   rk   )__name__
__module____qualname__rP   rU   rb   rh   rn   r-   r.   r/   rA   rA   b   s~        G G G G   $( ( ( (T       @	 	 	 	 	 	r.   rA   )r%   r&   )0__doc__
__future__r   collections.abcr   	functoolsr)   typingr   r(   r   rE   r   rules_inline.state_inliner	   tokenr
   utilsr   markdown_itr   	frozensetr$   __annotations__r]   r0   boolrD   r1   r2   r3   r+   backtickr5   rh   r6   r7   r8   r9   r:   r;   r<   rG   
link_pairspostProcessr>   r?   rA   r-   r.   r/   <module>r      s   " " " " " " " " " $ $ $ $ $ $     				                         2 2 2 2 2 2             '&&&&&& (1y  ( (     @ L L L L
 {D1478 
 \$%$%|"#,'(l09:&/0\l !&'L,-|"#0    ( }d23 l-.l0<=&23 |232    u u u u u u u u u ur.   