o
    tf                     @   s4   d dl mZ d dlmZmZmZ G dd deZdS )   )BaseRenderer)escape	striptagssafe_entityc                       s  e Zd ZdZdZdZdZd; fdd	Z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d<de	de	de	fddZd<de	d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	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<d-e	de	fd.d/Zde	de	fd0d1Zde	de	fd2d3Zde	de	fd4d5Zde	d6ede	fd7d8Zde	de	fd9d:Z   Z!S )=HTMLRendererz+A renderer for converting Markdown to HTML.html)zjavascript:z	vbscript:zfile:zdata:)zdata:image/gif;zdata:image/png;zdata:image/jpeg;zdata:image/webp;TNc                    s   t t|   || _|| _d S N)superr   __init___allow_harmful_protocols_escape)selfr   Zallow_harmful_protocols	__class__ _/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/mistune/renderers/html.pyr
      s   
zHTMLRenderer.__init__c                 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   )Z_get_methodgetZrender_tokens)r   tokenstatefuncr   textr   r   r   render_token   s   

zHTMLRenderer.render_tokenurlreturnc                 C   sP   | j du r|S | }| j r|t| j r|S || jr&|| js&dS |S )zhEnsure the given URL is safe. This method is used for rendering
        links, images, and etc.
        Tz#harmful-link)r   lower
startswithtupleHARMFUL_PROTOCOLSGOOD_DATA_PROTOCOLS)r   r   _urlr   r   r   safe_url-   s   

zHTMLRenderer.safe_urlr   c                 C   s   | j rt|S t|S r   )r   escape_textr   r   r   r   r   r   r   >   s   zHTMLRenderer.textc                 C      d| d S )Nz<em>z</em>r   r&   r   r   r   emphasisC      zHTMLRenderer.emphasisc                 C   r'   )Nz<strong>z	</strong>r   r&   r   r   r   strongF   r)   zHTMLRenderer.strongc                 C   s:   d|  | d }|r|dt| d 7 }|d | d S )Nz	<a href="" title=">z</a>)r$   r   )r   r   r   titlesr   r   r   linkI   s   zHTMLRenderer.linkc                 C   sJ   |  |}tt|}d| d | d }|r!|dt| d 7 }|d S )Nz
<img src="z" alt="r+   r,   z />)r$   r%   r   r   )r   r   r   r.   srcZaltr/   r   r   r   imageO   s   
zHTMLRenderer.imagec                 C   r'   )Nz<code>z</code>r   r&   r   r   r   codespanW   r)   zHTMLRenderer.codespanc                 C      dS )Nz<br />
r   r   r   r   r   	linebreakZ      zHTMLRenderer.linebreakc                 C   r4   )N
r   r5   r   r   r   	softbreak]   r7   zHTMLRenderer.softbreakc                 C   s   | j rt|S |S r   )r   r%   r   r   r   r   r   inline_html`   s   zHTMLRenderer.inline_htmlc                 C   r'   )N<p></p>
r   r&   r   r   r   	paragraphe   r)   zHTMLRenderer.paragraphlevelc                 K   sJ   dt | }d| }|d}|r|d| d 7 }|d | d | d S )	Nh<idz id="r+   r-   z</>
)strr   )r   r   r?   r   tagr   Z_idr   r   r   headingh   s   
zHTMLRenderer.headingc                 C   r4   )N r   r5   r   r   r   
blank_linep   r7   zHTMLRenderer.blank_linec                 C   r4   )Nz<hr />
r   r5   r   r   r   thematic_breaks   r7   zHTMLRenderer.thematic_breakc                 C   s   |S r   r   r&   r   r   r   
block_textv   r7   zHTMLRenderer.block_textcodec                 C   sP   d}|d urt | }|r|d dd }|d| d 7 }|d t| d S )Nz
<pre><code       z class="language-r+   r-   z</code></pre>
)r   stripsplitr%   )r   rK   infor   langr   r   r   
block_codey   s   zHTMLRenderer.block_codec                 C   r'   )Nz<blockquote>
z</blockquote>
r   r&   r   r   r   block_quote   r)   zHTMLRenderer.block_quotec                 C   s"   | j rdt|  d S |d S )Nr<   r=   r8   )r   r%   rN   r:   r   r   r   
block_html   s   zHTMLRenderer.block_htmlc                 C   r'   )Nz<div class="error"><pre>z</pre></div>
r   r&   r   r   r   block_error   r)   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="r+   rC   z</ol>
z<ul>
z</ul>
)r   rD   )r   r   rV   r   r   rW   r   r   r   list   s   
zHTMLRenderer.listc                 C   r'   )Nz<li>z</li>
r   r&   r   r   r   	list_item   r)   zHTMLRenderer.list_item)TNr   )"__name__
__module____qualname____doc__NAMEr!   r"   r
   r   rD   r$   r   r(   r*   r0   r2   r3   r6   r9   r;   r>   intrF   rH   rI   rJ   rR   rS   rT   rU   boolrX   rY   __classcell__r   r   r   r   r      s8    		r   N)corer   utilr   r%   r   r   r   r   r   r   r   <module>   s    