
    Xh                     "   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 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TypeTypeVarUnioncast)      )Selfz\n|$c                   4   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<   ddee   d
d	fdZd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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envNreturnc                     d| _         g | _        d| _        d| _        d| _        || _        |r|j                  | _        y di i| _        y )N r   T	ref_links)r   r   r   r   r   r   r   )selfr   s     @/var/www/html/myenv/lib/python3.12/site-packages/mistune/core.py__init__zBlockState.__init__(   sL       zzDH#R(DH    c                 J    | j                  |       }|j                  |       |S N)	__class__process)r"   r   childs      r#   child_statezBlockState.child_state:   s!    t$cr%   c                 2    || _         t        |      | _        y r'   )r   lenr   )r"   r   s     r#   r)   zBlockState.process?   s    c(r%   c                 ~    t         j                  | j                  | j                        }|J |j	                         S r'   )	_LINE_ENDsearchr   r   end)r"   ms     r#   find_line_endzBlockState.find_line_endC   s1    TXXt{{3}}uuwr%   end_posc                 4    | j                   | j                  | S r'   )r   r   )r"   r4   s     r#   get_textzBlockState.get_textH   s    xxg..r%   c                 :    | j                   r| j                   d   S y )N)r   r"   s    r#   
last_tokenzBlockState.last_tokenK   s    ;;;;r?" r%   tokenc                 h    | j                   j                  t        | j                         dz
  |       yz#Insert token before the last token.   Nr   insertr-   r"   r;   s     r#   prepend_tokenzBlockState.prepend_tokenO   $    3t{{+a/7r%   c                 :    | j                   j                  |       yz#Add token to the end of token list.Nr   appendrA   s     r#   append_tokenzBlockState.append_tokenS       5!r%   textc                     | j                         }|r|d   dk(  r|dxx   |z  cc<   y | j                  j                  d|d       y )Ntype	paragraphrJ   )rL   rJ   )r:   r   rG   )r"   rJ   r:   s      r#   add_paragraphzBlockState.add_paragraphW   sD    __&
*V,;v$&KKTBCr%   c                     | j                         }|r6|d   dk(  r.| j                         }|dxx   | j                  |      z  cc<   |S y )NrL   rM   rJ   )r:   r3   r6   )r"   r:   poss      r#   append_paragraphzBlockState.append_paragraph^   sL    __&
*V,;$$&Cv$--"44Jr%   c                 N    d}| j                   }|r|dz  }|j                   }|r|S )Nr   r>   )r   )r"   dr   s      r#   depthzBlockState.depthf   s1    FA]]F  r%   r'   )__name__
__module____qualname____doc__str__annotations__r	   r   r   intboolr   r   r$   r+   r)   r3   r6   r:   rB   rH   rN   rQ   rT    r%   r#   r   r      s   =	Hc3h  KOK	S	!!)x} ) )$s | 
#3 #4 #s 
/ / /#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| _        d| _        y )Nr    F)r   r   r   in_imagein_linkin_emphasis	in_strong)r"   r   s     r#   r$   zInlineState.__init__r   s4    ,. r%   r;   r   Nc                 h    | j                   j                  t        | j                         dz
  |       yr=   r?   rA   s     r#   rB   zInlineState.prepend_token{   rC   r%   c                 :    | j                   j                  |       yrE   rF   rA   s     r#   rH   zInlineState.append_token   rI   r%   c                     | j                  | j                        }| j                  |_        | j                  |_        | j                  |_        | j
                  |_        |S )zCreate a copy of current state.)r(   r   ra   rb   rc   rd   )r"   states     r#   copyzInlineState.copy   sH    txx( ,,..r%   )r   r_   )rU   rV   rW   rX   r   rY   r   r$   r   rB   rH   ri   r]   r%   r#   r_   r_   o   sU    3N384 84S> 8d 8"$sCx. "T "r%   r_   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'   )ro   ri   specificationlistrp   rules_methods_Parser__scr9   s    r#   r$   zParser.__init__   s@    !//446$,,-
  	
 .0	r%   rt   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)rr   ).0kr"   s     r#   	<genexpr>z$Parser.compile_sc.<locals>.<genexpr>   s!     S!T-?-?-BCSs    #)rt   joinrv   getrecompilerm   )r"   rt   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                   |<   |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'   r]   )r2   rh   r   r"   s     r#   <lambda>z!Parser.register.<locals>.<lambda>   s    tD!U/C r%   )r   N)ru   rr   rt   insert_rule)r"   r   r   r   r   s   `  ` r#   registerzParser.register   sQ     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'   )indexr@   
ValueErrorrG   )rt   r   r   r   s       r#   r   zParser.insert_rule   sQ    #F+UD) LL  #T"#s   #: AAr2   rh   c                 R    |j                   }|sJ | j                  |   } |||      S r'   )	lastgroupru   )r"   r2   rh   r   r   s        r#   parse_methodzParser.parse_method   s-    KK	y}}Y'Au~r%   r   Nr'   )rU   rV   rW   r   Mrm   rZ   r   rj   ro   r   r   rY   rp   r   r$   r   r	   r   r   r   r   r   r
   r[   r   r   r   staticmethodr   r   r]   r%   r#   rl   rl      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%   rl   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__methodsr9   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'   r]   )argkwargsr   r"   s     r#   r   z'BaseRenderer.register.<locals>.<lambda>   s    fT6RC6R66R r%   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   rY   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r;   rh   c                 <    | j                  |d         } |||      S )NrL   )r   )r"   r;   rh   r   s       r#   render_tokenzBaseRenderer.render_token   s#    f.E5!!r%   r   c              #   B   K   |D ]  }| j                  ||        y wr'   )r   )r"   r   rh   toks       r#   iter_tokenszBaseRenderer.iter_tokens   s(      	0C##C//	0s   c                 D    dj                  | j                  ||            S )Nr    )r   r   r"   r   rh   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   )rU   rV   rW   r   r   rY   rZ   r$   r   r   r   r   r   r   r   r   r   r   r   r]   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   version_infor   typing_extensionsr   r/   r   r_   rj   rl   r   r   r]   r%   r#   <module>r      s    	 
    $ w&BJJw	O Od < T;
+HWR[ HV&16 &1r%   