o
    ^ig                     @   s   d dl Z d dlmZ d dl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 e d	e jZG d
d de	ZdedefddZdS )    N)indent)AnyDictIterablecast   )BaseRenderer
BlockState)	strip_end   render_listz^[`~]+c                   @   s  e Zd ZdZdZdeeeef  de	defddZ
de	dee fdd	Zd
eeef de	defddZd
eeef de	defddZd
eeef de	defddZd
eeef de	defddZd
eeef de	defddZd
eeef de	defddZd
eeef de	defddZd
eeef de	defddZd
eeef de	defddZd
eeef de	defddZd
eeef de	defdd Zd
eeef de	defd!d"Zd
eeef de	defd#d$Zd
eeef de	defd%d&Zd
eeef de	defd'd(Zd
eeef de	defd)d*Zd
eeef de	defd+d,Zd
eeef de	defd-d.Zd
eeef de	defd/d0Zd
eeef de	defd1d2Zd3S )4MarkdownRendererz&A renderer to re-format Markdown text.markdowntokensstatereturnc                 C   s,   |  ||}|d| |d 7 }t|S )N


)render_tokensjoinrender_referrencesr
   )selfr   r   out r   U/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/mistune/renderers/markdown.py__call__   s   zMarkdownRenderer.__call__c                 c   s^    |j d }|D ]$}|| }d|d  d |d  }|d}|r)|d| d 7 }|V  qd S )	N	ref_links[labelz]: urltitle "")envget)r   r   r   keyattrstextr!   r   r   r   r      s   

z#MarkdownRenderer.render_referrencestokenc                 C   s   |d }|  ||S )Nchildren)r   )r   r)   r   r*   r   r   r   render_children!   s   z MarkdownRenderer.render_childrenc                 C      t t|d S Nrawr   strr   r)   r   r   r   r   r(   %      zMarkdownRenderer.textc                 C      d|  || d S )N*r+   r1   r   r   r   emphasis(      zMarkdownRenderer.emphasisc                 C   r3   )Nz**r5   r1   r   r   r   strong+   r7   zMarkdownRenderer.strongc           	      C   s   t t|d}| ||}d| d }|r|d | d S |d }|d }|d}||kr7|s7d| d S d	| |krE|sEd| d S |d
7 }d
|v sQd|v rZ|d| d 7 }n||7 }|rh|d| d 7 }|d S )Nr   r   ]r'   r    r!   <>zmailto:()r"   r#   )r   r0   r%   r+   )	r   r)   r   r   r(   r   r'   r    r!   r   r   r   link.   s&   
zMarkdownRenderer.linkc                 C   s   d|  || S )N!)r>   r1   r   r   r   imageF      zMarkdownRenderer.imagec                 C   s   dt t|d  d S )N`r.   r/   r1   r   r   r   codespanI   s   zMarkdownRenderer.codespanc                 C      dS )Nz  
r   r1   r   r   r   	linebreakL      zMarkdownRenderer.linebreakc                 C   rD   Nr   r   r1   r   r   r   	softbreakO   rF   zMarkdownRenderer.softbreakc                 C   rD   N r   r1   r   r   r   
blank_lineR   rF   zMarkdownRenderer.blank_linec                 C   r,   r-   r/   r1   r   r   r   inline_htmlU   r2   zMarkdownRenderer.inline_htmlc                 C   s   |  ||}|d S )Nr   r5   r   r)   r   r(   r   r   r   	paragraphX   s   zMarkdownRenderer.paragraphc                 C   s6   t t|d d }d| }| ||}|d | d S )Nr'   level# r   )r   intr+   )r   r)   r   rO   markerr(   r   r   r   heading\   s   zMarkdownRenderer.headingc                 C   rD   )Nz***

r   r1   r   r   r   thematic_breakb   rF   zMarkdownRenderer.thematic_breakc                 C   s   |  ||d S rG   r5   r1   r   r   r   
block_texte   rA   zMarkdownRenderer.block_textc                 C   s|   | di }tt| dd}tt|d }|r"|d dkr"|d7 }| d}|s-t|}tt|}|| d | | d S )	Nr'   inforJ   r.   r   rS   r   )r%   r   r0   _get_fenced_marker)r   r)   r   r'   rW   coderS   marker2r   r   r   
block_codeh   s   

zMarkdownRenderer.block_codec                 C   s*   t | ||ddd }|d}|d S )Nz> c                 S   rD   )NTr   )_r   r   r   <lambda>v   s    z.MarkdownRenderer.block_quote.<locals>.<lambda>z> 
r   )r   r+   rstriprM   r   r   r   block_quoteu   s   
zMarkdownRenderer.block_quotec                 C   s   t t|d d S )Nr.   r   r/   r1   r   r   r   
block_htmlz   s   zMarkdownRenderer.block_htmlc                 C   rD   rI   r   r1   r   r   r   block_error}   rF   zMarkdownRenderer.block_errorc                 C   s   t | ||S )Nr   r1   r   r   r   list   s   zMarkdownRenderer.listN) __name__
__module____qualname____doc__NAMEr   r   r0   r   r	   r   r   r+   r(   r6   r8   r>   r@   rC   rE   rH   rK   rL   rN   rT   rU   rV   r\   r`   ra   rb   rc   r   r   r   r   r      s2    "
"r   rZ   r   c                 C   sn   t | }|s	dS g }g }|D ]}|d dkr|t| q|t| q|s+dS |s/dS dt|d  S )Nz```r   rB   z~~~r   )	fenced_refindallappendlenmax)rZ   foundtickswavessr   r   r   rY      s   
rY   )retextwrapr   typingr   r   r   r   corer   r	   utilr
   _listr   compileMri   r   r0   rY   r   r   r   r   <module>   s    x