
    giu                    z    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
e          ZdS )z
HTML renderer
    )annotationsN)TYPE_CHECKINGAnycast)quote   )Renderer)blockinlinec                      e Zd ZdZd7dZd8dZd9d
Zd:dZd;dZd<dZ	d=dZ
d>dZd?dZd@dZdAdZdBdZdCdZdDd ZdEd"ZdFd$ZdGd&ZdHd(ZdId*ZdJd,ZdKd.ZdLd0ZdMd2ZedNd4            ZedNd5            Zd6S )OHTMLRendererz,The most common renderer for markdown parserelementblock.Paragraphreturnstrc                J    |                      |          }|j        r|S d| dS )Nz<p>z</p>
)render_children_tight)selfr   childrens      k/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/marko/html_renderer.pyrender_paragraphzHTMLRenderer.render_paragraph   s5    ''00> 	*O)))))    
block.Listc                    |j         rd}|j        dk    rd|j         dnd}nd}d}d                    |||                     |                    S )	Nolr   z start="" ulz"<{tag}{extra}>
{children}</{tag}>
)tagextrar   )orderedstartformatr   )r   r   r    r!   s       r   render_listzHTMLRenderer.render_list   ss    ? 	C3:=A3E3E/w}////2EECE5<<54+?+?+H+H = 
 
 	
r   block.ListItemc                    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   seps      r   render_list_itemzHTMLRenderer.render_list_item&   sb    w  A%%''2B12ExQV*W*W%CCCAcA4//88AAAAr   block.Quotec                4    d|                      |           dS )Nz<blockquote>
z</blockquote>
r   r   r   s     r   render_quotezHTMLRenderer.render_quote-   s!    N 4 4W = =NNNNr   block.FencedCodec                    |j         rd|                     |j                    dnd}d                    |t          j        |j        d         j                            S )Nz class="language-r   r   z<pre><code{}>{}</code></pre>
r   )langescape_htmlr$   htmlescaper   )r   r   r4   s      r   render_fenced_codezHTMLRenderer.render_fenced_code0   sk     |A 0 0 > >AAAA 	
 066$+g.q1:;;
 
 	
r   block.CodeBlockc                H    |                      t          d|                    S )Nr2   )r8   r   r0   s     r   render_code_blockzHTMLRenderer.render_code_block:   s!    &&t,>'H'HIIIr   block.HTMLBlockc                    |j         S N)bodyr0   s     r   render_html_blockzHTMLRenderer.render_html_block=   s
    |r   block.ThematicBreakc                    dS )Nz<hr />
 r0   s     r   render_thematic_breakz"HTMLRenderer.render_thematic_break@   s    zr   block.Headingc                `    d                     |j        |                     |                    S )Nz <h{level}>{children}</h{level}>
)levelr   )r$   rG   r   r0   s     r   render_headingzHTMLRenderer.render_headingC   s4    299-$*>*>w*G*G : 
 
 	
r   block.SetextHeadingc                H    |                      t          d|                    S )NrE   )rH   r   r0   s     r   render_setext_headingz"HTMLRenderer.render_setext_headingH   s     ""4#A#ABBBr   block.BlankLinec                    dS Nr   rC   r0   s     r   render_blank_linezHTMLRenderer.render_blank_lineK       rr   block.LinkRefDefc                    dS rN   rC   r0   s     r   render_link_ref_defz HTMLRenderer.render_link_ref_defN   rP   r   inline.Emphasisc                4    d|                      |           dS )Nz<em>z</em>r/   r0   s     r   render_emphasiszHTMLRenderer.render_emphasisQ   s!    :d**733::::r   inline.StrongEmphasisc                4    d|                      |           dS )Nz<strong>z	</strong>r/   r0   s     r   render_strong_emphasisz#HTMLRenderer.render_strong_emphasisT   s!    B$..w77BBBBr   inline.InlineHTMLc                6    t          t          |j                  S r>   )r   r   r   r0   s     r   render_inline_htmlzHTMLRenderer.render_inline_htmlW   s    C)***r   r   c                    t          |j        t                    r|                     |j                  S |                     |          S r>   )
isinstancer   r   r5   r   r0   s     r   render_plain_textzHTMLRenderer.render_plain_textZ   sB    g&,, 	6##G$4555##G,,,r   inline.Linkc                    d}|j         rd|                     |j                    dnd}|                     |j                  }|                     |          }|                    |||          S )Nz<a href="{}"{}>{}</a> title="r   r   )titler5   
escape_urldestr   r$   )r   r   templaterc   urlr?   s         r   render_linkzHTMLRenderer.render_link_   sq    *AHV=4++GM::====TVoogl++##G,,sE4000r   inline.AutoLinkc                H    |                      t          d|                    S )Nr`   )rh   r   r0   s     r   render_auto_linkzHTMLRenderer.render_auto_linkf   s     ]G < <===r   inline.Imagec                   d}|j         rd|                     |j                    dnd}|                     |j                  }| j        }| j        | _        |                     |          }|| _        |                    |||          S )Nz<img src="{}" alt="{}"{} />rb   r   r   )rc   r5   rd   re   renderr_   r   r$   )r   r   rf   rc   rg   render_funcr?   s          r   render_imagezHTMLRenderer.render_imagei   s    0AHV=4++GM::====TVoogl++k,##G,,!sD%000r   inline.Literalc                H    |                      t          d|                    S )Ninline.RawText)render_raw_textr   r0   s     r   render_literalzHTMLRenderer.render_literals   s!    ##D)97$C$CDDDr   rs   c                6    |                      |j                  S r>   )r5   r   r0   s     r   rt   zHTMLRenderer.render_raw_textv   s     0111r   inline.LineBreakc                    |j         rdS dS )Nr(   z<br />
)softr0   s     r   render_line_breakzHTMLRenderer.render_line_breaky   s    < 	4zr   inline.CodeSpanc                b    dt          j        t          t          |j                             dS )Nz<code>z</code>)r6   r7   r   r   r   r0   s     r   render_code_spanzHTMLRenderer.render_code_span~   s*    IDg.>$?$?@@IIIIr   rawc                v    t          j        t          j        |                                         dd          S )Nz&#x27;')r6   r7   unescapereplacer~   s    r   r5   zHTMLRenderer.escape_html   s,    {4=--..66xEEEr   c                l    t          j        t          t          j        |           d                    S )zO
        Escape urls to prevent code injection craziness. (Hopefully.)
        z/#:()*?=%@+,&)safe)r6   r7   r   r   r   s    r   rd   zHTMLRenderer.escape_url   s+    
 {5s!3!3/JJJKKKr   N)r   r   r   r   )r   r   r   r   )r   r&   r   r   )r   r-   r   r   )r   r2   r   r   )r   r9   r   r   )r   r<   r   r   )r   rA   r   r   )r   rE   r   r   )r   rI   r   r   )r   rL   r   r   )r   rQ   r   r   )r   rT   r   r   )r   rW   r   r   )r   rZ   r   r   )r   r   r   r   )r   r`   r   r   )r   ri   r   r   )r   rl   r   r   )r   rq   r   r   )r   rs   r   r   )r   rw   r   r   )r   r{   r   r   )r~   r   r   r   )__name__
__module____qualname____doc__r   r%   r,   r1   r8   r;   r@   rD   rH   rK   rO   rS   rV   rY   r\   r_   rh   rk   rp   ru   rt   rz   r}   staticmethodr5   rd   rC   r   r   r   r      sL       66* * * *	
 	
 	
 	
B B B BO O O O
 
 
 
J J J J      
 
 
 

C C C C      ; ; ; ;C C C C+ + + +- - - -
1 1 1 1> > > >1 1 1 1E E E E2 2 2 2   
J J J J F F F \F L L L \L L Lr   r   )r   
__future__r   r6   typingr   r   r   urllib.parser   rendererr	   r   r
   r   r   rC   r   r   <module>r      s     # " " " " "  + + + + + + + + + +              yL yL yL yL yL8 yL yL yL yL yLr   