o
    ^i>                     @   s`   d dl mZmZmZmZmZmZ ddlmZm	Z	 ddl
mZ ddl
mZmZ G dd deZdS )	    )AnyClassVarDictOptionalTupleLiteral   )BaseRenderer
BlockState)escape)safe_entity	striptagsc                	       s@  e Zd ZU dZeed< dZeed  ed< dZ	ee
edf  ed< dZee
edf  ed	< dGdedee ddf fddZdeeef dedefddZdedefddZdedefddZdedefddZdedefddZdHdededee defd d!ZdHdededee defd"d#Zdedefd$d%Zdefd&d'Zdefd(d)Zdedefd*d+Zdedefd,d-Zded.ed/edefd0d1Zdefd2d3Z defd4d5Z!dedefd6d7Z"dHd8ed9ee defd:d;Z#dedefd<d=Z$dedefd>d?Z%dedefd@dAZ&dedBed/edefdCdDZ'dedefdEdFZ(  Z)S )IHTMLRendererz+A renderer for converting Markdown to HTML._escapehtmlNAME)zjavascript:z	vbscript:zfile:zdata:.HARMFUL_PROTOCOLS)zdata:image/gif;zdata:image/png;zdata:image/jpeg;zdata:image/webp;GOOD_DATA_PROTOCOLSTNr   allow_harmful_protocolsreturnc                    s   t t|   || _|| _d S N)superr   __init___allow_harmful_protocolsr   )selfr   r   	__class__ Q/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/mistune/renderers/html.pyr      s   
zHTMLRenderer.__init__tokenstatec                 C   sx   |  |d }|d}d|v r|d }nd|v r"| |d |}n|r+|di |S | S |r8||fi |S ||S )Ntypeattrsrawchildrenr   )_get_methodgetrender_tokens)r   r   r    funcr"   textr   r   r   render_token   s   

zHTMLRenderer.render_tokenurlc                 C   s\   | j du r	t|S | }| j r|t| j rt|S || jr*|| js*dS t|S )zhEnsure the given URL is safe. This method is used for rendering
        links, images, and etc.
        Tz#harmful-link)r   escape_textlower
startswithtupler   r   )r   r+   _urlr   r   r   safe_url1   s   
zHTMLRenderer.safe_urlr)   c                 C   s   | j rt|S t|S r   )r   r,   r   r   r)   r   r   r   r)   @   s   zHTMLRenderer.textc                 C      d| d S )Nz<em>z</em>r   r2   r   r   r   emphasisE      zHTMLRenderer.emphasisc                 C   r3   )Nz<strong>z	</strong>r   r2   r   r   r   strongH   r5   zHTMLRenderer.strongtitlec                 C   s:   d|  | d }|r|dt| d 7 }|d | d S )Nz	<a href="" title=">z</a>)r1   r   )r   r)   r+   r7   sr   r   r   linkK   s   zHTMLRenderer.linkc                 C   sJ   |  |}tt|}d| d | d }|r!|dt| d 7 }|d S )Nz
<img src="z" alt="r8   r9   z />)r1   r,   r   r   )r   r)   r+   r7   srcaltr;   r   r   r   imageQ   s   
zHTMLRenderer.imagec                 C   s   dt | d S )Nz<code>z</code>)r,   r2   r   r   r   codespanY   s   zHTMLRenderer.codespanc                 C      dS )Nz<br />
r   r   r   r   r   	linebreak\      zHTMLRenderer.linebreakc                 C   rA   )N
r   rB   r   r   r   	softbreak_   rD   zHTMLRenderer.softbreakc                 C   s   | j rt|S |S r   )r   r,   r   r   r   r   r   inline_htmlb   s   zHTMLRenderer.inline_htmlc                 C   r3   )N<p></p>
r   r2   r   r   r   	paragraphg   r5   zHTMLRenderer.paragraphlevelr"   c                 K   sJ   dt | }d| }|d}|r|d| d 7 }|d | d | d S )	Nh<idz id="r8   r:   z</>
)strr&   )r   r)   rL   r"   tagr   _idr   r   r   headingj   s   
zHTMLRenderer.headingc                 C   rA   )N r   rB   r   r   r   
blank_liner   rD   zHTMLRenderer.blank_linec                 C   rA   )Nz<hr />
r   rB   r   r   r   thematic_breaku   rD   zHTMLRenderer.thematic_breakc                 C   s   |S r   r   r2   r   r   r   
block_textx   rD   zHTMLRenderer.block_textcodeinfoc                 C   sP   d}|d urt | }|r|d dd }|d| d 7 }|d t| d S )Nz
<pre><code   r   z class="language-r8   r:   z</code></pre>
)r   stripsplitr,   )r   rY   rZ   r   langr   r   r   
block_code{   s   zHTMLRenderer.block_codec                 C   r3   )Nz<blockquote>
z</blockquote>
r   r2   r   r   r   block_quote   r5   zHTMLRenderer.block_quotec                 C   s"   | j rdt|  d S |d S )NrI   rJ   rE   )r   r,   r\   rG   r   r   r   
block_html   s   zHTMLRenderer.block_htmlc                 C   r3   )Nz<div class="error"><pre>z</pre></div>
r   r2   r   r   r   block_error   r5   zHTMLRenderer.block_errororderedc                 K   sJ   |rd}| d}|d ur|dt| d 7 }|d | d S d| d S )	Nz<olstartz start="r8   rP   z</ol>
z<ul>
z</ul>
)r&   rQ   )r   r)   rc   r"   r   rd   r   r   r   list   s   
zHTMLRenderer.listc                 C   r3   )Nz<li>z</li>
r   r2   r   r   r   	list_item   r5   zHTMLRenderer.list_item)TNr   )*__name__
__module____qualname____doc__bool__annotations__r   r   r   r   r   rQ   r   r   r   r   r   r
   r*   r1   r)   r4   r6   r<   r?   r@   rC   rF   rH   rK   intrT   rV   rW   rX   r_   r`   ra   rb   re   rf   __classcell__r   r   r   r   r      s:   
    		r   N)typingr   r   r   r   r   r   corer	   r
   utilr   r,   r   r   r   r   r   r   r   <module>   s
     