
    Xh                     t    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y	)
    )AnyCallableDictIterableListOptionalTupleUnion   )BlockParser)BaseRenderer
BlockState)InlineParser)Pluginc                   n   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y)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 ]
  } ||         y y N)r   r   r   r   r   before_parse_hooksbefore_render_hooksafter_render_hooks)selfr   r   r   r   plugins         D/var/www/html/myenv/lib/python3.12/site-packages/mistune/markdown.py__init__zMarkdown.__init__   sn     =ME>!^F "'
$*RTRT   	 ! t     r   returnc                      ||        y r    )r   r   s     r   usezMarkdown.use2   s	    tr    statec                     | j                  |j                  |      }| j                  r| j                  ||      S t        |      S r   )_iter_rendertokensr   list)r   r%   datas      r   render_statezMarkdown.render_state5   s:      u5====u--Dzr    r(   c              #      K   |D ]q  }d|v r$| j                  |d   |      }t        |      |d<   nCd|v r?|j                  d      }| j                  |j	                  d      |j
                        |d<   | s y w)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"&x.J3wwv #'++djj.Euyy"QJI		s   A8A:sc                    || j                   j                         }|j                  dd      }|j                  dd      }|j                  d      s|dz  }|j	                  |       | j
                  D ]  } || |        | j                   j                  |       | j                  D ]  } || |        | j                  |      }| 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
        z

)
r   	state_clsreplaceendswithprocessr   parser   r+   r   )r   r3   r%   hookhook2resulthook3s          r   r;   zMarkdown.parseG   s     =JJ((*E IIfd#IIdD!zz$IAa++ 	Du	 	

-- 	E$	 ""5),, 	0E4/F	0u}r    filepathencodingc                     || j                   j                         }||j                  d<   t        |d      5 }|j	                         }d d d        j                  |      }| j                  ||      S # 1 sw Y   ,xY w)N__file__rb)r   r7   r1   openreaddecoder;   )r   r@   rA   r%   fr3   s2s          r   rF   zMarkdown.readh   sv     =JJ((*E (		*(D! 	QA	 XXhzz"e$$		 	s   A44A=c                 2    |d}| j                  |      d   S )Nr5   r   )r;   )r   r3   s     r   __call__zMarkdown.__call__u   s    9Azz!}Qr    )NNNNr   )zutf-8N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r$   r   r
   strr   r   r   r+   r'   r	   r;   rF   rK   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>rU      s&    N N N % * ' o  o r    