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
 ddlmZ ddlmZmZ erBddlmZ dd	lmZ dd
lmZ ddlmZ ddgZe dZg dZdeeef deeef fddZG dd deZ			d)dddedee dee dee dedefddZG dd deZ			d)deded ee d!ee d"ee defd#d$Z dededefd%d&Z!dededefd'd(Z"dS )*    N)TYPE_CHECKINGAnyDictListMatchOptional   )escape)
escape_url   )BaseDirectiveDirectivePlugin)BlockParser)
BlockState)Markdown)HTMLRendererImageFigurez^\d+(?:\.\d*)?)topmiddlebottomleftcenterrightoptionsreturnc                 C   s   i }d| v r| d |d< |  d}|r|tv r||d< |  d}|  d}|r0t|r0||d< |r;t|r;||d< d| v rGt| d |d< |S )Naltalignheightwidthtarget)get_allowed_aligns_num_rematchr
   )r   attrsr   r   r    r&   S/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/mistune/directives/image.py_parse_attrs   s   


r(   c                
   @   s@   e Zd ZdZdddee dddeeef fdd	ZdddZ	dS )r   imageblockr   mstater   r   c                 C   s.   t | |}t|}| ||d< d|dS )Nsrcblock_imagetyper%   )dictparse_optionsr(   parse_title)selfr*   r+   r,   r   r%   r&   r&   r'   parse,   s   
zImage.parse	directiver   mdr   Nc                 C   s@   | | j| j |jd usJ |jjdkr|j dt d S d S )Nhtmlr.   )registerNAMEr5   rendererrender_block_imager4   r6   r7   r&   r&   r'   __call__2   s
   zImage.__call__r6   r   r7   r   r   N)
__name__
__module____qualname__r:   r   strr   r   r5   r>   r&   r&   r&   r'   r   )   s    &r4   r   r-   r   r   r   r%   c                 K   s  dt | d }d}|r|dt | d 7 }|r-| r%|d| d 7 }n|d| d 7 }|rD| r<|d| d 7 }n|d	| d 7 }|rP|d
t | d 7 }|d7 }d}|d}	|	rc|d|	 7 }|d}
|
r| |
}d| d | d }|| d S d| d | d S )Nz
<img src="" z alt="z width="zwidth:;z	 height="zheight:z style="z />zblock-imager    align-r    z
<a class="z" href="z">z</a>
z<div class="</div>
)escape_textisdigitr!   safe_url)r4   r-   r   r   r   r%   imgstyle_clsr   r    hrefouterr&   r&   r'   r<   9   s2   


r<   c                   @   sn   e Zd ZdZdddee dddeeeee	f   fdd	Z
dddee dddeee	f fd
dZdddZdS )r   figurer*   r   r+   r,   r   r   c                 C   sr   |  |}|s	d S t| |||}|d }|d dkr7d|d< |g}t|dkr5|d|dd  d |S d S )Nr   r0   	paragraph
figcaptionr   legend)r0   children)parse_contentlistparse_tokenslenappend)r4   r*   r+   r,   contenttokenscaptionrU   r&   r&   r'   parse_directive_contente   s   
zFigure.parse_directive_contentc                 C   s   t | |}t|}| ||d< |dd }i }|r ||d< dD ]}||v r.|| ||< q"d|dg}	| |||}
|
rC|	|
 d||	dS )Nr-   r   )figwidthfigclassr.   r/   rQ   )r0   r%   rU   )r1   r2   r(   r3   popr^   extend)r4   r*   r+   r,   r   image_attrsr   	fig_attrskrU   r[   r&   r&   r'   r5   v   s&   
zFigure.parser6   r   r7   r   Nc                 C   sj   | | j| j |jd usJ |jjdkr3|j dt |j dt |j dt |j dt d S d S )Nr8   rQ   r.   rS   rT   )r9   r:   r5   r;   render_figurer<   render_figcaptionrender_legendr=   r&   r&   r'   r>      s   zFigure.__call__r?   )r@   rA   rB   r:   r   rC   r   r   r   r   r^   r5   r>   r&   r&   r&   r'   r   b   s    
&textr   r_   r`   c                 C   sT   d}|r
|d| 7 }|r|d| 7 }d| d }|r"|d| d 7 }|d | d S )	NrQ   rG    z<figure class="rD   z style="width:z>
z
</figure>
r&   )r4   ri   r   r_   r`   rN   r8   r&   r&   r'   rf      s   rf   c                 C      d| d S )Nz<figcaption>z</figcaption>
r&   r4   ri   r&   r&   r'   rg         rg   c                 C   rk   )Nz<div class="legend">
rH   r&   rl   r&   r&   r'   rh      rm   rh   )NNN)#retypingr   r   r   r   r   r   utilr	   rI   r
   _baser   r   block_parserr   corer   markdownr   renderers.htmlr   __all__compiler#   r"   rC   r(   r   r<   r   rf   rg   rh   r&   r&   r&   r'   <module>   sh     
"
)9
