
    Mh                     |    d dl mZmZmZmZmZmZmZmZ ddl	m
Z
 ddlmZmZ ddlmZ ddlmZ  G d d          Zd	S )
    )AnyCallableDictIterableListOptionalTupleUnion   )BlockParser)BaseRenderer
BlockState)InlineParser)Pluginc                      e Zd ZdZ	 	 	 	 ddee         dee         dee         deee	                  fdZ
de	d	dfd
Zded	eeeeeef                  f         fdZdeeeef                  ded	eeeef                  fdZddedee         d	eeeeeeef                  f         ef         fdZ	 ddededee         d	eeeeeeef                  f         ef         fdZded	eeeeeef                  f         fdZdS )Markdowna  Markdown instance to convert markdown text into HTML or other formats.
    Here is an example with the HTMLRenderer::

        from mistune import HTMLRenderer

        md = Markdown(renderer=HTMLRenderer(escape=False))
        md('hello **world**')

    :param renderer: a renderer to convert parsed tokens
    :param block: block level syntax parser
    :param inline: inline level syntax parser
    :param plugins: mistune plugins to use
    Nrendererblockinlinepluginsc                     |t                      }|t                      }|| _        || _        || _        g | _        g | _        g | _        |r|D ]} ||            d S d S N)r   r   r   r   r   before_parse_hooksbefore_render_hooksafter_render_hooks)selfr   r   r   r   plugins         P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mistune/markdown.py__init__zMarkdown.__init__   s     =MME>!^^F "'
$*RTRT   	  	!  t	 	     r   returnc                      ||            d S r    )r   r   s     r   usezMarkdown.use2   s    tr    statec                     |                      |j        |          }| j        r|                     ||          S t          |          S r   )_iter_rendertokensr   list)r   r%   datas      r   render_statezMarkdown.render_state5   sC      u55= 	.==u---Dzzr    r(   c              #     K   |D ]}d|v r/|                      |d         |          }t          |          |d<   nJd|v rF|                    d          }|                     |                    d          |j                  |d<   |V  d S )Nchildrentextz 
	)r'   r)   popr   stripenv)r   r(   r%   tokr-   r.   s         r   r'   zMarkdown._iter_render;   s       		 		CS  ,,S_eDD"&x..J3wwv #'++djj.E.Euy"Q"QJIIII		 		r    sc                    || j                                         }|                    dd          }|                    dd          }|                    d          s|dz  }|                    |           | j        D ]} || |           | j                             |           | j        D ]} || |           |                     |          }| j	        D ]} || ||          }||fS )zParse and convert the given markdown string. If renderer is None,
        the returned **result** will be parsed markdown tokens.

        :param s: markdown string
        :param state: instance of BlockState
        :returns: result, state
        Nz

)
r   	state_clsreplaceendswithprocessr   parser   r+   r   )r   r3   r%   hookhook2resulthook3s          r   r;   zMarkdown.parseG   s    =J((**E IIfd##IIdD!!zz$ 	IAa+ 	 	DDu
- 	 	EE$""5)), 	0 	0EU4//FFu}r    utf-8filepathencodingc                    || j                                         }||j        d<   t          |d          5 }|                                }d d d            n# 1 swxY w Y   |                    |          }|                     ||          S )N__file__rb)r   r7   r1   openreaddecoder;   )r   rA   rB   r%   fr3   s2s          r   rG   zMarkdown.readh   s     =J((**E (	*(D!! 	QA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 XXhzz"e$$$s   AAAc                 @    |d}|                      |          d         S )Nr5   r   )r;   )r   r3   s     r   __call__zMarkdown.__call__u   s!    9Azz!}}Qr    )NNNNr   )r@   N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r$   r   r
   strr   r   r   r+   r'   r	   r;   rG   rL   r#   r    r   r   r   	   s#          ,0'+)-.2 <( $ &	
 (6*+   4& T    * sDc3h<P7P1Q    
8DcN#; 
J 
S[\`adfiai\jSk 
 
 
 
 s 8J#7 5sTXY]^acf^fYgThOhIikuIuCv    D UY% %%'*%=Ej=Q%	uS$tCH~../;	<% % % % #  %T$sCx.-A(A"B            r    r   N)typingr   r   r   r   r   r   r	   r
   block_parserr   corer   r   inline_parserr   r   r   r   r#   r    r   <module>rV      s    N N N N N N N N N N N N N N N N N N N N % % % % % % * * * * * * * * ' ' ' ' ' '      o  o  o  o  o  o  o  o  o  o r    