o
    ^i'	                     @   s   d dl Z d dlmZmZmZmZmZmZ ddlm	Z	m
Z
 er2ddlmZ ddlmZmZ ddlmZ G d	d
 d
e
ZdddededefddZdS )    N)TYPE_CHECKINGAnyDictListMatchUnion   )BaseDirectiveDirectivePlugin   )BlockParser)BaseRenderer
BlockState)Markdownc                   @   s\   e Zd Zdddee dddeeeef eeeef  f fddZ	d	e
d
dddfddZdS )Includeblockr   mstater   returnc                 C   sH  |j d}|sdddS d}| |}|r#t|}d|v r"|d }ni }| |}tjtj||}	tj	|	}	|	|krFdd| dS tj
|	sSdd| dS t|	d	}
|
 |}W d    n1 sjw   Y  tj|d
 }|dv r| }|	|j d< || || |jS |dv rd|dS |	|d< d||dS )N__file__block_errorzMissing source file)typerawzutf-8encodingzCould not include self: zCould not find file: rbr   >   .md.mkd	.markdown>   .htm.html.xhtml
block_htmlfilepathinclude)r   r   attrs)envgetparse_optionsdictparse_titleospathjoindirnamenormpathisfileopenreaddecodesplitext	state_clsprocessparsetokens)selfr   r   r   source_filer   optionsr$   relpathdestfcontentext	new_state rA   U/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/mistune/directives/include.pyr6      sN   






zInclude.parse	directivemdr   Nc                 C   s:   | d| j |jr|jjdkr|j dt d S d S d S )Nr#   html)registerr6   rendererNAMErender_html_include)r8   rC   rD   rA   rA   rB   __call__B   s   zInclude.__call__)__name__
__module____qualname__r   strr   r   r   r   r6   r	   rJ   rA   rA   rA   rB   r      s    
5r   rG   r   textr$   r   c                 K   s   d| d S )Nz <pre class="directive-include">
z</pre>
rA   )rG   rO   r$   rA   rA   rB   rI   H   s   rI   )r*   typingr   r   r   r   r   r   _baser	   r
   block_parserr   corer   r   markdownr   r   rN   rI   rA   rA   rA   rB   <module>   s     <