
    iKj                     *   d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ ej(                  dk\  rd dlmZ nd dlmZ  e j.                  d      Z G d d      Z G d d	      Z ed
ee      Z G d dee         Z G d de      Zy)    N)AnyCallableClassVarDictGenericIterableListMatchMutableMappingOptionalPatternSetTupleTypeTypeVarUnioncast)      )Selfz\n|$c                   v   e Zd ZU dZeed<   eeeef      ed<   e	ed<   e	ed<   e
ed<   eed<   eeef   ed<   ee	   ed	<   ddee   dd
fdZdded	eee	      dd fdZdedd
fdZde	fdZde	de	fdZde	defdZde	defdZdefdZdeeef   dd
fdZdeeef   dd
fdZdedd
fdZdee	   fdZde	fdZy
)
BlockStatez3The state to save block parser's cursor and tokens.srctokenscursor
cursor_max
list_tightparentenvlazy_line_startsNreturnc                     d| _         g | _        d| _        d| _        d| _        || _        t               | _        |r|j                  | _        y di i| _        y )N r   T	ref_links)	r   r   r   r   r   r   setr    r   )selfr   s     ]/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/mistune/core.py__init__zBlockState.__init__+   sV       # zzDH#R(DH    c                 \    | j                  |       }|j                  |       |r||_        |S N)	__class__processr    )r&   r   r    childs       r'   child_statezBlockState.child_state>   s,    t$c%5E"r)   c                 2    || _         t        |      | _        y r+   )r   lenr   )r&   r   s     r'   r-   zBlockState.processE   s    c(r)   c                 8    | j                  | j                        S r+   )find_line_end_atr   r&   s    r'   find_line_endzBlockState.find_line_endI   s    $$T[[11r)   posc                 j    t         j                  | j                  |      }|J |j                         S r+   )	_LINE_ENDsearchr   end)r&   r6   ms      r'   r3   zBlockState.find_line_end_atL   s-    TXXs+}}uuwr)   end_posc                 4    | j                   | j                  | S r+   )r   r   )r&   r<   s     r'   get_textzBlockState.get_textQ   s    xxg..r)   	start_posc                 >    | j                   || j                  |       S r+   )r   r3   )r&   r?   s     r'   get_linezBlockState.get_lineT   s    xx	D$9$9)$DEEr)   c                 :    | j                   r| j                   d   S y )N)r   r4   s    r'   
last_tokenzBlockState.last_tokenW   s    ;;;;r?" r)   tokenc                 h    | j                   j                  t        | j                         dz
  |       yz#Insert token before the last token.   Nr   insertr1   r&   rE   s     r'   prepend_tokenzBlockState.prepend_token[   $    3t{{+a/7r)   c                 :    | j                   j                  |       yz#Add token to the end of token list.Nr   appendrK   s     r'   append_tokenzBlockState.append_token_       5!r)   textc                     | j                         }|r|d   dk(  r|dxx   |z  cc<   y | j                  j                  d|d       y )Ntype	paragraphrT   )rV   rT   )rD   r   rQ   )r&   rT   rD   s      r'   add_paragraphzBlockState.add_paragraphc   sD    __&
*V,;v$&KKTBCr)   c                     | j                         }|r6|d   dk(  r.| j                         }|dxx   | j                  |      z  cc<   |S y )NrV   rW   rT   )rD   r5   r>   )r&   rD   r6   s      r'   append_paragraphzBlockState.append_paragraphj   sL    __&
*V,;$$&Cv$--"44Jr)   c                 N    d}| j                   }|r|dz  }|j                   }|r|S )Nr   rH   )r   )r&   dr   s      r'   depthzBlockState.depthr   s1    FA]]F  r)   r+   )__name__
__module____qualname____doc__str__annotations__r	   r   r   intboolr   r   r   r(   r/   r-   r5   r3   r>   rA   rD   rL   rR   rX   rZ   r]    r)   r'   r   r      sU   =	Hc3h  KOK	S	!!#h)x} ) )&s hs3x6H T` #3 #4 #2s 2C C 
/ / /F# F# F#C #84S> 8d 8"$sCx. "T "D# D$ D(3- s r)   r   c                   b    e Zd ZdZdeeef   fdZdeeef   ddfdZ	deeef   ddfdZ
d
d	Zy)InlineStatez)The state to save inline parser's tokens.r   c                 f    || _         d| _        g | _        d| _        d| _        d| _        i | _        y )Nr#   Fr   )r   r   r   in_imagein_linkno_close_bracket_beforelink_brackets)r&   r   s     r'   r(   zInlineState.__init__~   s5    ,.,-$DFr)   rE   r!   Nc                 h    | j                   j                  t        | j                         dz
  |       yrG   rI   rK   s     r'   rL   zInlineState.prepend_token   rM   r)   c                 :    | j                   j                  |       yrO   rP   rK   s     r'   rR   zInlineState.append_token   rS   r)   c                     | j                  | j                        }| j                  |_        | j                  |_        | j                  |_        |S )zCreate a copy of current state.)r,   r   rj   rk   rm   )r&   states     r'   copyzInlineState.copy   s=    txx("00r)   )r!   rh   )r^   r_   r`   ra   r   rb   r   r(   r   rL   rR   rr   rf   r)   r'   rh   rh   {   sW    3GN384 G84S> 8d 8"$sCx. "T "r)   rh   STc                   X   e Zd ZU ej                  Zded<   ee   ed<   i Z	e
eeef      ed<   g Ze
ee      ed<   ddZdd	eee      dee   fd
Z	 ddedeedf   deeee   egee   f   dee   ddf
dZdedededdfdZedd	ee   dedee   ddfd       Zdee   dedee   fdZy)Parserzre._FlagsTypesc_flag	state_clsSPECIFICATIONDEFAULT_RULESr!   Nc                     | j                   j                         | _        t        | j                        | _        i | _        i | _        y r+   )rx   rr   specificationlistry   rules_methods_Parser__scr4   s    r'   r(   zParser.__init__   s@    !//446$,,-
  	
 .0	r)   r}   c                     |d} j                   }ndj                  |      } j                  j                  |      }|r|S dj                   fd|D              }t	        j
                  | j                        }| j                  |<   |S )N$|c              3   J   K   | ]  }d |dj                   |   d  yw)z(?P<>)N)r{   ).0kr&   s     r'   	<genexpr>z$Parser.compile_sc.<locals>.<genexpr>   s"     SU!T-?-?-BCUs    #)r}   joinr   getrecompilerv   )r&   r}   keyscregexs   `    r'   
compile_sczParser.compile_sc   sw    =CJJE((5/CYY]]3ISUSSZZt||,		#	r)   namepatternfuncbeforec                       fd j                   |<    j                  j                          |r| j                  |<   | j                  vr j                   j                  ||       yy)a3  Register a new rule to parse the token. This method is usually used to
        create a new plugin.

        :param name: name of the new grammar
        :param pattern: regex pattern in string
        :param func: the parsing function
        :param before: insert this rule before a built-in rule
        c                      | |      S r+   rf   )r;   rq   r   r&   s     r'   <lambda>z!Parser.register.<locals>.<lambda>   s    tD!U/Cr)   )r   N)r~   r   clearr{   r}   insert_rule)r&   r   r   r   r   s   `  ` r'   registerzParser.register   s_     Dd		'.Dt$tzz!TZZf= "r)   c                     t        d      )Nz.This plugin is not compatible with mistune v3.)DeprecationWarning)r&   r   r   r   s       r'   register_rulezParser.register_rule   s     !QRRr)   c                     |r%	 | j                  |      }| j                  ||       y | j                  |       y # t        $ r | j                  |       Y y w xY wr+   )indexrJ   
ValueErrorrQ   )r}   r   r   r   s       r'   r   zParser.insert_rule   sQ    #F+UD) LL  #T"#s   #: AAr;   rq   c                 R    |j                   }|sJ | j                  |   } |||      S r+   )	lastgroupr~   )r&   r;   rq   r   r   s        r'   parse_methodzParser.parse_method   s-    KK	y}}Y'Au~r)   r!   Nr+   )r^   r_   r`   r   Mrv   rc   r   rs   rx   r   r   rb   ry   r   r(   r   r	   r   r   r   r   r   r
   rd   r   r   r   staticmethodr   r   rf   r)   r'   ru   ru      sJ   !ttG_#Bx.0M8DcN+0-/M8HSM*/0c 3 ws| * !%>> sDy!> eCj"-x}<=	>
 > 
>,S# S S3 S4 S 49 C # RV  eCj   r)   ru   c                       e Zd ZU dZee   ed<   ddZdededef   ddfd	Z	dededef   fd
Z
deeef   dedefdZdeeeef      dedee   fdZdeeeef      dedefdZdeeeef      dedefdZy)BaseRendererbaseNAMEr!   Nc                     i | _         y r+   _BaseRenderer__methodsr4   s    r'   r(   zBaseRenderer.__init__   s	    8:r)   r   method.c                 .      fd j                   |<   y)zRegister a render method for the named token. For example::

        def render_wiki(renderer, key, title):
            return f'<a href="/wiki/{key}">{title}</a>'

        renderer.register('wiki', render_wiki)
        c                       g| i |S r+   rf   )argkwargsr   r&   s     r'   r   z'BaseRenderer.register.<locals>.<lambda>   s    fT6RC6R66Rr)   Nr   r&   r   r   s   ` `r'   r   zBaseRenderer.register   s      Str)   c                     	 t        t        dt        f   t        j	                  | |            S # t
        $ r< | j                  j                  |      }|st        dj                  |            |cY S w xY w)N.zNo renderer "{!r}")	r   r   rb   object__getattribute__AttributeErrorr   r   formatr   s      r'   _get_methodzBaseRenderer._get_method   sl    	c*F,C,CD$,OPP 	^^''-F$%9%@%@%FGGM		s   ,/ AA43A4rE   rq   c                 <    | j                  |d         } |||      S )NrV   )r   )r&   rE   rq   r   s       r'   render_tokenzBaseRenderer.render_token  s#    f.E5!!r)   r   c              #   B   K   |D ]  }| j                  ||        y wr+   )r   )r&   r   rq   toks       r'   iter_tokenszBaseRenderer.iter_tokens  s#     C##C// s   c                 D    dj                  | j                  ||            S )Nr#   )r   r   r&   r   rq   s      r'   render_tokenszBaseRenderer.render_tokens	  s    wwt''677r)   c                 &    | j                  ||      S r+   )r   r   s      r'   __call__zBaseRenderer.__call__  s    !!&%00r)   r   )r^   r_   r`   r   r   rb   rc   r(   r   r   r   r   r   r   r   r   r   r   r   rf   r)   r'   r   r      s     D(3- ;	SS 	S(38*< 	S 	S c(: "$sCx. " " "0(4S>": 0: 0RZ[^R_ 08HT#s(^$< 8Z 8TW 81xS#X7 1
 1s 1r)   r   )r   systypingr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   version_infor   typing_extensionsr   r8   r   rh   rs   ru   r   r   rf   r)   r'   <module>r      s    	 
    ( w&BJJw	Y Yx : T;
+IWR[ IX&16 &1r)   