o
    >Diu                     @  sl   d Z ddlmZ ddlZddlmZmZmZ ddl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
HTML renderer
    )annotationsN)TYPE_CHECKINGAnycast)quote   )Renderer)blockinlinec                   @  s  e Zd ZdZdPddZdQd	d
ZdRddZdSddZdTddZdUd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^d0d1Zd_d3d4Zd`d6d7Zdad9d:Zdbd<d=Zdcd?d@ZdddBdCZdedEdFZdfdHdIZedgdKdLZedgdMdNZdOS )hHTMLRendererz,The most common renderer for markdown parserelementblock.Paragraphreturnstrc                 C  s    |  |}|jr
|S d| dS )Nz<p>z</p>
)render_children_tight)selfr   children r   L/var/www/Datamplify/venv/lib/python3.10/site-packages/marko/html_renderer.pyrender_paragraph   s   
zHTMLRenderer.render_paragraph
block.Listc                 C  sF   |j rd}|jdkrd|j dnd}nd}d}dj||| |dS )	Nolr   z start="" ulz"<{tag}{extra}>
{children}</{tag}>
)tagextrar   )orderedstartformatr   )r   r   r   r   r   r   r   render_list   s   zHTMLRenderer.render_listblock.ListItemc                 C  s@   t |jdkrt|jd ddrd}nd}d| | | dS )	Nr   r   r   Fr   
z<li>z</li>
)lenr   getattrr   )r   r   sepr   r   r   render_list_item&   s    zHTMLRenderer.render_list_itemblock.Quotec                 C     d|  | dS )Nz<blockquote>
z</blockquote>
r   r   r   r   r   r   render_quote-      zHTMLRenderer.render_quoteblock.FencedCodec                 C  s8   |j rd| |j  dnd}d|t|jd jS )Nz class="language-r   r   z<pre><code{}>{}</code></pre>
r   )langescape_htmlr    htmlescaper   )r   r   r/   r   r   r   render_fenced_code0   s   zHTMLRenderer.render_fenced_codeblock.CodeBlockc                 C     |  td|S )Nr.   )r3   r   r+   r   r   r   render_code_block:      zHTMLRenderer.render_code_blockblock.HTMLBlockc                 C  s   |j S N)bodyr+   r   r   r   render_html_block=   s   zHTMLRenderer.render_html_blockblock.ThematicBreakc                 C     dS )Nz<hr />
r   r+   r   r   r   render_thematic_break@      z"HTMLRenderer.render_thematic_breakblock.Headingc                 C  s   dj |j| |dS )Nz <h{level}>{children}</h{level}>
)levelr   )r    rA   r   r+   r   r   r   render_headingC   s   zHTMLRenderer.render_headingblock.SetextHeadingc                 C  r5   )Nr@   )rB   r   r+   r   r   r   render_setext_headingH   r7   z"HTMLRenderer.render_setext_headingblock.BlankLinec                 C  r=   Nr   r   r+   r   r   r   render_blank_lineK   r?   zHTMLRenderer.render_blank_lineblock.LinkRefDefc                 C  r=   rF   r   r+   r   r   r   render_link_ref_defN   r?   z HTMLRenderer.render_link_ref_definline.Emphasisc                 C  r)   )Nz<em>z</em>r*   r+   r   r   r   render_emphasisQ   r-   zHTMLRenderer.render_emphasisinline.StrongEmphasisc                 C  r)   )Nz<strong>z	</strong>r*   r+   r   r   r   render_strong_emphasisT   r-   z#HTMLRenderer.render_strong_emphasisinline.InlineHTMLc                 C  s   t t|jS r9   )r   r   r   r+   r   r   r   render_inline_htmlW      zHTMLRenderer.render_inline_htmlr   c                 C  s"   t |jtr| |jS | |S r9   )
isinstancer   r   r0   r   r+   r   r   r   render_plain_textZ   s   
zHTMLRenderer.render_plain_textinline.Linkc                 C  sF   d}|j rd| |j  dnd}| |j}| |}||||S )Nz<a href="{}"{}>{}</a> title="r   r   )titler0   
escape_urldestr   r    )r   r   templaterU   urlr:   r   r   r   render_link_   s
   
zHTMLRenderer.render_linkinline.AutoLinkc                 C  r5   )NrS   )rZ   r   r+   r   r   r   render_auto_linkf   r7   zHTMLRenderer.render_auto_linkinline.Imagec                 C  sZ   d}|j rd| |j  dnd}| |j}| j}| j| _| |}|| _||||S )Nz<img src="{}" alt="{}"{} />rT   r   r   )rU   r0   rV   rW   renderrR   r   r    )r   r   rX   rU   rY   render_funcr:   r   r   r   render_imagei   s   
zHTMLRenderer.render_imageinline.Literalc                 C  r5   )Ninline.RawText)render_raw_textr   r+   r   r   r   render_literals   r7   zHTMLRenderer.render_literalrb   c                 C  s   |  |jS r9   )r0   r   r+   r   r   r   rc   v   rP   zHTMLRenderer.render_raw_textinline.LineBreakc                 C  s   |j rdS dS )Nr#   z<br />
)softr+   r   r   r   render_line_breaky   s   zHTMLRenderer.render_line_breakinline.CodeSpanc                 C  s   dt tt|j dS )Nz<code>z</code>)r1   r2   r   r   r   r+   r   r   r   render_code_span~   s   zHTMLRenderer.render_code_spanrawc                 C  s   t t | ddS )Nz&#x27;')r1   r2   unescapereplacerj   r   r   r   r0      s   zHTMLRenderer.escape_htmlc                 C  s   t tt | ddS )zO
        Escape urls to prevent code injection craziness. (Hopefully.)
        z/#:()*?=%@+,&)safe)r1   r2   r   rl   rn   r   r   r   rV      s   zHTMLRenderer.escape_urlN)r   r   r   r   )r   r   r   r   )r   r"   r   r   )r   r(   r   r   )r   r.   r   r   )r   r4   r   r   )r   r8   r   r   )r   r<   r   r   )r   r@   r   r   )r   rC   r   r   )r   rE   r   r   )r   rH   r   r   )r   rJ   r   r   )r   rL   r   r   )r   rN   r   r   )r   r   r   r   )r   rS   r   r   )r   r[   r   r   )r   r]   r   r   )r   ra   r   r   )r   rb   r   r   )r   re   r   r   )r   rh   r   r   )rj   r   r   r   )__name__
__module____qualname____doc__r   r!   r'   r,   r3   r6   r;   r>   rB   rD   rG   rI   rK   rM   rO   rR   rZ   r\   r`   rd   rc   rg   ri   staticmethodr0   rV   r   r   r   r   r      s:    
























r   )rs   
__future__r   r1   typingr   r   r   urllib.parser   rendererr   r   r	   r
   r   r   r   r   r   <module>   s    