o
    i                     @   sD   d dl mZmZ G dd deZG dd deZG dd deZdS )	   )escapeescape_htmlc                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )BaseRendererbasec                 C   s
   i | _ d S N_methodsself r   L/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/mistune/renderers.py__init__      
zBaseRenderer.__init__c                 C   s   || j |< d S r   r   r
   namemethodr   r   r   register
      zBaseRenderer.registerc                 C   sD   zt | |W S  ty!   | j|}|std|| Y S w )NzNo renderer "{!r}")object__getattribute__AttributeErrorr   getformatr   r   r   r   _get_method   s   zBaseRenderer._get_methodc                 C   s   t d)Nz4The renderer needs to implement the finalize method.)NotImplementedErrorr
   datar   r   r   finalize   s   zBaseRenderer.finalizeN)__name__
__module____qualname__NAMEr   r   r   r   r   r   r   r   r      s    	r   c                       s   e Zd ZdZdd Zd$ddZd%dd	Zd
d Zdd Zdd Z	dd Z
dd Zdd Zd&ddZdd Zd&ddZdd Zdd Z fd d!Zd"d# Z  ZS )'AstRendererastc                 C   
   d|dS )Ntexttyper%   r   r
   r%   r   r   r   r%      r   zAstRenderer.textNc                 C   s$   t |trd|dg}d|||dS )Nr%   r&   link)r'   r)   childrentitle)
isinstancestr)r
   r)   r*   r+   r   r   r   r)   !   s   
zAstRenderer.link c                 C   s   d|||dS )Nimage)r'   srcaltr+   r   )r
   r0   r1   r+   r   r   r   r/   +   r   zAstRenderer.imagec                 C   r$   )Ncodespanr&   r   r(   r   r   r   r2   .   r   zAstRenderer.codespanc                 C      ddiS )Nr'   	linebreakr   r	   r   r   r   r4   1      zAstRenderer.linebreakc                 C   r$   )Ninline_htmlr&   r   r
   htmlr   r   r   r6   4   r   zAstRenderer.inline_htmlc                 C      d||dS )Nheadingr'   r*   levelr   r
   r*   r<   r   r   r   r:   7      zAstRenderer.headingc                 C   r3   )Nr'   newliner   r	   r   r   r   r?   :   r5   zAstRenderer.newlinec                 C   r3   )Nr'   thematic_breakr   r	   r   r   r   r@   =   r5   zAstRenderer.thematic_breakc                 C   r9   )N
block_code)r'   r%   infor   )r
   r*   rB   r   r   r   rA   @   s   zAstRenderer.block_codec                 C   r$   )N
block_htmlr&   r   )r
   r*   r   r   r   rC   G   r   zAstRenderer.block_htmlc                 C   s"   d|||d}|d ur||d< |S )Nlist)r'   r*   orderedr<   startr   )r
   r*   rE   r<   rF   tokenr   r   r   rD   J   s   zAstRenderer.listc                 C   r9   )N	list_itemr;   r   r=   r   r   r   rH   U   r>   zAstRenderer.list_itemc                    s    fdd}|S )Nc                    s
    | dS )N)r'   r*   r   )r*   r   r   r   __astY   r   z1AstRenderer._create_default_method.<locals>.__astr   )r
   r   _AstRenderer__astr   rI   r   _create_default_methodX   s   z"AstRenderer._create_default_methodc                    s0   z	t t| |W S  ty   | | Y S w r   )superr"   r   r   rL   )r
   r   	__class__r   r   r   ]   s
   zAstRenderer._get_methodc                 C   s   t |S r   )rD   r   r   r   r   r   c   r5   zAstRenderer.finalizeNNr.   Nr   )r   r   r    r!   r%   r)   r/   r2   r4   r6   r:   r?   r@   rA   rC   rD   rH   rL   r   r   __classcell__r   r   rN   r   r"      s$    




r"   c                       s   e Zd ZdZh dZd2 fdd	Zdd Zd	d
 Zd3ddZd4ddZ	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd5d$d%Zd&d' Zd(d) Zd*d+ Zd5d,d-Zd.d/ Zd0d1 Z  ZS )6HTMLRendererr8   >   data:	vbscript:javascript:TNc                    s   t t|   || _|| _d S r   )rM   rS   r   _escape_allow_harmful_protocols)r
   r   allow_harmful_protocolsrN   r   r   r   o   s   
zHTMLRenderer.__init__c                 C   s`   | j d u r	| j}n| j du rd }n
t| j }| j| }|r.|D ]}| |r-d} |S q|S )NTz#harmful-link)rX   HARMFUL_PROTOCOLSsetlower
startswith)r
   urlschemesallowedsr   r   r   	_safe_urlt   s   



zHTMLRenderer._safe_urlc                 C   s   | j rt|S t|S r   )rW   r   r   r(   r   r   r   r%      s   zHTMLRenderer.textc                 C   sJ   |d u r|}d|  | d }|r|dt| d 7 }|d |p!| d S )Nz	<a href="" title=">z</a>rb   r   )r
   r)   r%   r+   ra   r   r   r   r)      s   zHTMLRenderer.linkr.   c                 C   sF   |  |}t|}d| d | d }|r|dt| d 7 }|d S )Nz
<img src="z" alt="rc   rd   z />rf   )r
   r0   r1   r+   ra   r   r   r   r/      s   
zHTMLRenderer.imagec                 C      d| d S )Nz<em>z</em>r   r(   r   r   r   emphasis   r>   zHTMLRenderer.emphasisc                 C   rg   )Nz<strong>z	</strong>r   r(   r   r   r   strong   r>   zHTMLRenderer.strongc                 C   s   dt | d S )Nz<code>z</code>)r   r(   r   r   r   r2      s   zHTMLRenderer.codespanc                 C      dS )Nz<br />
r   r	   r   r   r   r4         zHTMLRenderer.linebreakc                 C   s   | j rt|S |S r   rW   r   r7   r   r   r   r6      s   zHTMLRenderer.inline_htmlc                 C   rg   )N<p></p>
r   r(   r   r   r   	paragraph   r>   zHTMLRenderer.paragraphc                 C   s(   dt | }d| d | d | d S )Nh<re   z</>
r-   )r
   r%   r<   tagr   r   r   r:      s   zHTMLRenderer.headingc                 C   rj   Nr.   r   r	   r   r   r   r?      rk   zHTMLRenderer.newlinec                 C   rj   )Nz<hr />
r   r	   r   r   r   r@      rk   zHTMLRenderer.thematic_breakc                 C   s   |S r   r   r(   r   r   r   
block_text   rk   zHTMLRenderer.block_textc                 C   sT   d}|d ur
|  }|r |d dd }t|}|d| d 7 }|d t| d S )Nz
<pre><coder       z class="language-rc   re   z</code></pre>
)stripsplitr   r   )r
   coderB   r8   langr   r   r   rA      s   zHTMLRenderer.block_codec                 C   rg   )Nz<blockquote>
z</blockquote>
r   r(   r   r   r   block_quote   r>   zHTMLRenderer.block_quotec                 C   s   | j s|d S dt| d S )N
rm   rn   rl   r7   r   r   r   rC      s   zHTMLRenderer.block_htmlc                 C   rg   )Nz<div class="error">z</div>
r   r7   r   r   r   block_error   r>   zHTMLRenderer.block_errorc                 C   s@   |rd}|d ur|dt | d 7 }|d | d S d| d S )Nz<olz start="rc   rr   z</ol>
z<ul>
z</ul>
rs   )r
   r%   rE   r<   rF   r8   r   r   r   rD      s   zHTMLRenderer.listc                 C   rg   )Nz<li>z</li>
r   )r
   r%   r<   r   r   r   rH      r>   zHTMLRenderer.list_itemc                 C   s
   d |S ru   )joinr   r   r   r   r      r   zHTMLRenderer.finalize)TNrP   rQ   r   )r   r   r    r!   rZ   r   rb   r%   r)   r/   rh   ri   r2   r4   r6   ro   r:   r?   r@   rv   rA   r|   rC   r~   rD   rH   r   rR   r   r   rN   r   rS   g   s2    

	


rS   N)utilr   r   r   r   r"   rS   r   r   r   r   <module>   s    L