B
    &d                 @   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   ^/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/mistune/renderers.py__init__   s    zBaseRenderer.__init__c             C   s   || j |< d S )N)r   )r   namemethodr   r   r	   register
   s    zBaseRenderer.registerc             C   sD   yt | |S  tk
r>   | j|}|s:td||S X d S )NzNo renderer "{!r}")object__getattribute__AttributeErrorr   getformat)r   r   r   r   r   r	   _get_method   s    zBaseRenderer._get_methodc             C   s   t dd S )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   s
   d|dS )Ntext)typer   r   )r   r   r   r   r	   r      s    zAstRenderer.textNc             C   s$   t |trd|dg}d|||dS )Nr   )r   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   r&   r'   r!   r   r   r	   r%   +   s    zAstRenderer.imagec             C   s
   d|dS )Ncodespan)r   r   r   )r   r   r   r   r	   r(   .   s    zAstRenderer.codespanc             C   s   ddiS )Nr   	linebreakr   )r   r   r   r	   r)   1   s    zAstRenderer.linebreakc             C   s
   d|dS )Ninline_html)r   r   r   )r   htmlr   r   r	   r*   4   s    zAstRenderer.inline_htmlc             C   s   d||dS )Nheading)r   r    levelr   )r   r    r-   r   r   r	   r,   7   s    zAstRenderer.headingc             C   s   ddiS )Nr   newliner   )r   r   r   r	   r.   :   s    zAstRenderer.newlinec             C   s   ddiS )Nr   thematic_breakr   )r   r   r   r	   r/   =   s    zAstRenderer.thematic_breakc             C   s   d||dS )N
block_code)r   r   infor   )r   r    r1   r   r   r	   r0   @   s    zAstRenderer.block_codec             C   s
   d|dS )N
block_html)r   r   r   )r   r    r   r   r	   r2   G   s    zAstRenderer.block_htmlc             C   s"   d|||d}|d k	r||d< |S )Nlist)r   r    orderedr-   startr   )r   r    r4   r-   r5   tokenr   r   r	   r3   J   s    zAstRenderer.listc             C   s   d||dS )N	list_item)r   r    r-   r   )r   r    r-   r   r   r	   r7   U   s    zAstRenderer.list_itemc                s    fdd}|S )Nc                s
    | dS )N)r   r    r   )r    )r   r   r	   Z__astY   s    z1AstRenderer._create_default_method.<locals>.__astr   )r   r   Z_AstRenderer__astr   )r   r	   _create_default_methodX   s    z"AstRenderer._create_default_methodc                s0   yt t| |S  tk
r*   | |S X d S )N)superr   r   r   r8   )r   r   )	__class__r   r	   r   ]   s    zAstRenderer._get_methodc             C   s   t |S )N)r3   )r   r   r   r   r	   r   c   s    zAstRenderer.finalize)NN)r$   N)N)N)r   r   r   r   r   r   r%   r(   r)   r*   r,   r.   r/   r0   r2   r3   r7   r8   r   r   __classcell__r   r   )r:   r	   r      s"   




r   c                   s   e Zd ZdZdddhZd4 fdd	Zd	d
 Zdd Zd5ddZd6d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d7d&d'Zd(d) Zd*d+ Zd,d- Zd8d.d/Zd0d1 Zd2d3 Z  ZS )9HTMLRendererr+   zjavascript:z	vbscript:zdata:TNc                s   t t|   || _|| _d S )N)r9   r<   r
   _escape_allow_harmful_protocols)r   r   Zallow_harmful_protocols)r:   r   r	   r
   o   s    zHTMLRenderer.__init__c             C   s`   | j d kr| j}n$| j dkr"d }nt| j }| j| }|r\x |D ]}| |r@d}P q@W |S )NTz#harmful-link)r>   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 )N)r=   r   r   )r   r   r   r   r	   r      s    zHTMLRenderer.textc             C   sJ   |d kr|}d|  | d }|r6|dt| d 7 }|d |pB| d S )Nz	<a href=""z title=">z</a>)rG   r   )r   r   r   r!   rF   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="rH   z title="z />)rG   r   )r   r&   r'   r!   rF   r   r   r	   r%      s    
zHTMLRenderer.imagec             C   s   d| d S )Nz<em>z</em>r   )r   r   r   r   r	   emphasis   s    zHTMLRenderer.emphasisc             C   s   d| d S )Nz<strong>z	</strong>r   )r   r   r   r   r	   strong   s    zHTMLRenderer.strongc             C   s   dt | d S )Nz<code>z</code>)r   )r   r   r   r   r	   r(      s    zHTMLRenderer.codespanc             C   s   dS )Nz<br />
r   )r   r   r   r	   r)      s    zHTMLRenderer.linebreakc             C   s   | j rt|S |S )N)r=   r   )r   r+   r   r   r	   r*      s    zHTMLRenderer.inline_htmlc             C   s   d| d S )Nz<p>z</p>
r   )r   r   r   r   r	   	paragraph   s    zHTMLRenderer.paragraphc             C   s(   dt | }d| d | d | d S )Nh<rI   z</z>
)r#   )r   r   r-   tagr   r   r	   r,      s    zHTMLRenderer.headingc             C   s   dS )Nr$   r   )r   r   r   r	   r.      s    zHTMLRenderer.newlinec             C   s   dS )Nz<hr />
r   )r   r   r   r	   r/      s    zHTMLRenderer.thematic_breakc             C   s   |S )Nr   )r   r   r   r   r	   
block_text   s    zHTMLRenderer.block_textc             C   sT   d}|d k	r|  }|r@|d dd }t|}|d| d 7 }|d t| d S )Nz
<pre><coder       z class="language-rH   rI   z</code></pre>
)stripsplitr   r   )r   coder1   r+   langr   r   r	   r0      s    zHTMLRenderer.block_codec             C   s   d| d S )Nz<blockquote>
z</blockquote>
r   )r   r   r   r   r	   block_quote   s    zHTMLRenderer.block_quotec             C   s   | j s|d S dt| d S )N
z<p>z</p>
)r=   r   )r   r+   r   r   r	   r2      s    zHTMLRenderer.block_htmlc             C   s   d| d S )Nz<div class="error">z</div>
r   )r   r+   r   r   r	   block_error   s    zHTMLRenderer.block_errorc             C   s@   |r4d}|d k	r$|dt | d 7 }|d | d S d| d S )Nz<olz start="rH   z>
z</ol>
z<ul>
z</ul>
)r#   )r   r   r4   r-   r5   r+   r   r   r	   r3      s    zHTMLRenderer.listc             C   s   d| d S )Nz<li>z</li>
r   )r   r   r-   r   r   r	   r7      s    zHTMLRenderer.list_itemc             C   s
   d |S )Nr$   )join)r   r   r   r   r	   r      s    zHTMLRenderer.finalize)TN)NN)r$   N)N)N)r   r   r   r   r?   r
   rG   r   r   r%   rJ   rK   r(   r)   r*   rL   r,   r.   r/   rP   r0   rV   r2   rX   r3   r7   r   r;   r   r   )r:   r	   r<   g   s4   
	



r<   N)utilr   r   r   r   r   r<   r   r   r   r	   <module>   s   L