o
    >Di9                     @  sl   d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 ddl
mZ er,ddlmZmZ G d	d
 d
eZdS )z
Markdown renderer
    )annotationsN)contextmanager)TYPE_CHECKING	Generatorcast   )Renderer)blockinlinec                      s  e Zd ZdZdR fddZdS fddZe	dTdUddZdVddZdWddZ	dXddZ
dYddZdZddZd[d d!Zd\d#d$Zd]d&d'Zd^d)d*Zd_d,d-Zd`d/d0Zdad2d3Zdbd5d6Zdcd8d9Zddd;d<Zded>d?ZdfdAdBZdgdDdEZdhdGdHZdidJdKZdjdMdNZdkdPdQZ  ZS )lMarkdownRendererzRender the AST back to markdown document.

    It is useful for, e.g. merging sections and formatting documents.
    For convenience, markdown renderer provides all render functions for basic elements
    and those from common extensions.
    returnNonec                   s   t    d| _d| _d S N )super__init___prefix_second_prefixself	__class__ J/var/www/Datamplify/venv/lib/python3.10/site-packages/marko/md_renderer.pyr      s   

zMarkdownRenderer.__init__c                   s   d| _ d| _t  S r   )r   r   r   	__enter__r   r   r   r   r      s   
zMarkdownRenderer.__enter__r   prefixstrsecond_prefixGenerator[None, None, None]c                 c  s@    | j }| j}|  j |7  _ |  j|7  _d V  || _ || _d S Nr   r   )r   r   r   
old_prefixold_second_prefixr   r   r   	container#   s   
zMarkdownRenderer.containerelementblock.Paragraphc                 C  s$   |  |}| j| d }| j| _|S N
)render_childrenr   r   )r   r$   childrenliner   r   r   render_paragraph/   s   
z!MarkdownRenderer.render_paragraph
block.Listc              	   C  s   g }|j r;t|j|jD ]-\}}| | ddtt|d   || | W d    n1 s4w   Y  qn(|jD ]$}| |j	 dd || | W d    n1 s]w   Y  q>| j
| _d|S )Nz.     z  r   )ordered	enumerater)   startr#   lenr   appendrenderbulletr   r   join)r   r$   resultnumchildr   r   r   render_list5   s   $

zMarkdownRenderer.render_listblock.ListItemc                 C  s
   |  |S r   r(   r   r$   r   r   r   render_list_itemB   s   
z!MarkdownRenderer.render_list_itemblock.Quotec                 C  sL   |  dd | |d}W d    n1 sw   Y  | j| _|d S )Nz> r'   )r#   r(   rstripr   r   r   r$   r7   r   r   r   render_quoteE   s
   zMarkdownRenderer.render_quoteblock.FencedCodec                   sv   |j r	d|j  nd} jd|j |  g}| fdd | D  | jd   j _d|d S )Nr-   r   z```c                 3  s    | ]} j | V  qd S r   r   .0r*   r   r   r   	<genexpr>N   s
    
z6MarkdownRenderer.render_fenced_code.<locals>.<genexpr>r'   )	extrar   langextendr(   
splitlinesr3   r   r6   )r   r$   rH   linesr   r   r   render_fenced_codeK   s   z#MarkdownRenderer.render_fenced_codeblock.CodeBlockc                   sX   d  | }j  |d  g fdd|dd  D  }j_d|d S )Nz    r   c                   s   g | ]	}j   | qS r   rD   rE   indentr   r   r   
<listcomp>Y   s    z6MarkdownRenderer.render_code_block.<locals>.<listcomp>r   r'   )r(   rK   r   r   r6   )r   r$   rL   r   rO   r   render_code_blockV   s   
z"MarkdownRenderer.render_code_blockblock.HTMLBlockc                 C  s   | j |j d }| j| _ |S r&   )r   bodyr   rA   r   r   r   render_html_block_   s   z"MarkdownRenderer.render_html_blockblock.ThematicBreakc                 C     | j d }| j| _ |S )Nz* * *
r    rA   r   r   r   render_thematic_breakd      
z&MarkdownRenderer.render_thematic_breakblock.Headingc                 C  s.   | j d|j  d | | d }| j| _ |S )N#r-   r'   )r   levelr(   r   rA   r   r   r   render_headingi   s   zMarkdownRenderer.render_headingblock.SetextHeadingc                 C  s   |  td|S )NrZ   )r]   r   r=   r   r   r   render_setext_headingt   s   z&MarkdownRenderer.render_setext_headingblock.BlankLinec                 C  rW   r&   r    rA   r   r   r   render_blank_linew   rY   z"MarkdownRenderer.render_blank_lineblock.LinkRefDefc                 C  s0   |j }|jr|d|j 7 }d|j d| dS )Nr-   [z]: r'   )desttitlelabel)r   r$   	link_textr   r   r   render_link_ref_def|   s   z$MarkdownRenderer.render_link_ref_definline.Emphasisc                 C     d|  | dS )N*r<   r=   r   r   r   render_emphasis      z MarkdownRenderer.render_emphasisinline.StrongEmphasisc                 C  rj   )Nz**r<   r=   r   r   r   render_strong_emphasis   rm   z'MarkdownRenderer.render_strong_emphasisinline.InlineHTMLc                 C  s   t t|jS r   )r   r   r)   r=   r   r   r   render_inline_html      z#MarkdownRenderer.render_inline_htmlinline.Linkc                   s   |   } jrd jddnd | jsJ t fdd| jj D d }|d urA||kr8d| dS d| d| dS d urJd	 nd
}d| d j | dS )Nz"{}""\"c                 3  s&    | ]\}}| j fkr|V  qd S r   rd   )rF   kvr$   
link_titler   r   rG      s    z/MarkdownRenderer.render_link.<locals>.<genexpr>rc   ]z][r-   r   z]())	r(   re   formatreplace	root_nodenextlink_ref_defsitemsrd   )r   r$   rg   rf   re   r   ry   r   render_link   s    


zMarkdownRenderer.render_linkinline.AutoLinkc                 C  s   d|j  dS )N<>rv   r=   r   r   r   render_auto_link      z!MarkdownRenderer.render_auto_linkinline.Imagec                 C  s8   d}|j rd|j ddnd}|| ||j|S )Nz![{}]({}{})z "{}"rt   ru   r   )re   r}   r~   r(   rd   )r   r$   templatere   r   r   r   render_image   s   zMarkdownRenderer.render_imageinline.Literalc                 C  s   d|j  S )N\r)   r=   r   r   r   render_literal   rr   zMarkdownRenderer.render_literalinline.RawTextc                 C  s   ddl m} t|d|jS )Nr   )PANGU_REr-   )	ext.pangur   resubr)   )r   r$   r   r   r   r   render_raw_text   s   z MarkdownRenderer.render_raw_textinline.LineBreakc                 C  s   |j rdS dS )Nr'   z\
)softr=   r   r   r   render_line_break   r   z"MarkdownRenderer.render_line_breakinline.CodeSpanc                 C  s<   |j }|r|d dks|d dkrd| dS d|j  dS )Nr   `z`` z ``r   )r   r$   textr   r   r   render_code_span   s   z!MarkdownRenderer.render_code_span)r   r   )r   r   )r   )r   r   r   r   r   r   )r$   r%   r   r   )r$   r,   r   r   )r$   r;   r   r   )r$   r?   r   r   )r$   rC   r   r   )r$   rN   r   r   )r$   rS   r   r   )r$   rV   r   r   )r$   rZ   r   r   )r$   r^   r   r   )r$   r`   r   r   )r$   rb   r   r   )r$   ri   r   r   )r$   rn   r   r   )r$   rp   r   r   )r$   rs   r   r   )r$   r   r   r   )r$   r   r   r   )r$   r   r   r   )r$   r   r   r   )r$   r   r   r   )r$   r   r   r   )__name__
__module____qualname____doc__r   r   r   r#   r+   r:   r>   rB   rM   rR   rU   rX   r]   r_   ra   rh   rl   ro   rq   r   r   r   r   r   r   r   __classcell__r   r   r   r   r      s:    






	













r   )r   
__future__r   r   
contextlibr   typingr   r   r   rendererr   r   r	   r
   r   r   r   r   r   <module>   s    