
    Xh>                     f    d dl mZmZ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mZ  G d de      Zy)	    )AnyClassVarDictOptionalTupleLiteral   )BaseRenderer
BlockState)escape)safe_entity	striptagsc            	       4    e Zd ZU dZeed<   dZeed      ed<   dZ	ee
edf      ed<   dZee
edf      ed	<   d/dedee   dd
f fdZdeeef   dedefdZdedefdZdedefdZdedefdZdedefdZd0dededee   defdZd0dededee   defdZdedefdZdefdZdefdZdedefdZdedefdZded ed!edefd"Zdefd#Z defd$Z!dedefd%Z"d0d&ed'ee   defd(Z#dedefd)Z$dedefd*Z%dedefd+Z&ded,ed!edefd-Z'dedefd.Z( xZ)S )1HTMLRendererz+A renderer for converting Markdown to HTML._escapehtmlNAME)zjavascript:z	vbscript:zfile:zdata:.HARMFUL_PROTOCOLS)zdata:image/gif;zdata:image/png;zdata:image/jpeg;zdata:image/webp;GOOD_DATA_PROTOCOLSNr   allow_harmful_protocolsreturnc                 F    t         t        |           || _        || _        y N)superr   __init___allow_harmful_protocolsr   )selfr   r   	__class__s      J/var/www/html/myenv/lib/python3.12/site-packages/mistune/renderers/html.pyr   zHTMLRenderer.__init__   s    lD*,(?%    tokenstatec                     | j                  |d         }|j                  d      }d|v r|d   }n+d|v r| j                  |d   |      }n|r |di |S  |       S |r	 ||fi |S  ||      S )Ntypeattrsrawchildren )_get_methodgetrender_tokens)r   r!   r"   funcr%   texts         r   render_tokenzHTMLRenderer.render_token   s    f.		'"E><D5 %%eJ&7?D}e}$v&&&:r    urlc                 N   | j                   du rt        |      S |j                         }| j                   r/|j                  t	        | j                               rt        |      S |j                  | j
                        r|j                  | j                        syt        |      S )zhEnsure the given URL is safe. This method is used for rendering
        links, images, and etc.
        Tz#harmful-link)r   escape_textlower
startswithtupler   r   )r   r/   _urls      r   safe_urlzHTMLRenderer.safe_url1   s     ((D0s##yy{((T__U4C`C`=a-bs##??41124??4KcKc;d"3r    r-   c                 F    | j                   rt        |      S t        |      S r   )r   r1   r   r   r-   s     r   r-   zHTMLRenderer.text@   s    <<t$$4  r    c                     d|z   dz   S )Nz<em>z</em>r(   r8   s     r   emphasiszHTMLRenderer.emphasisE   s    }w&&r    c                     d|z   dz   S )Nz<strong>z	</strong>r(   r8   s     r   strongzHTMLRenderer.strongH   s    D ;..r    titlec                 r    d| j                  |      z   dz   }|r|dt        |      z   dz   z  }|dz   |z   dz   S )Nz	<a href="" title=">z</a>)r6   r   )r   r-   r/   r=   ss        r   linkzHTMLRenderer.linkK   sI    $--,,s2k%00366A3w~&&r    c                     | j                  |      }t        t        |            }d|z   dz   |z   dz   }|r|dt        |      z   dz   z  }|dz   S )Nz
<img src="z" alt="r?   r@   z />)r6   r1   r   r   )r   r-   r/   r=   srcaltrB   s          r   imagezHTMLRenderer.imageQ   s]    mmC )D/*3*S036k%00366A5yr    c                 $    dt        |      z   dz   S )Nz<code>z</code>)r1   r8   s     r   codespanzHTMLRenderer.codespanY   s    +d++i77r    c                      y)Nz<br />
r(   r   s    r   	linebreakzHTMLRenderer.linebreak\       r    c                      y)N
r(   rK   s    r   	softbreakzHTMLRenderer.softbreak_   s    r    c                 4    | j                   rt        |      S |S r   )r   r1   r   r   s     r   inline_htmlzHTMLRenderer.inline_htmlb   s    <<t$$r    c                     d|z   dz   S )N<p></p>
r(   r8   s     r   	paragraphzHTMLRenderer.paragraphg   s    t|h&&r    levelr%   c                     dt        |      z   }d|z   }|j                  d      }|r|d|z   dz   z  }|dz   |z   dz   |z   dz   S )	Nh<idz id="r?   rA   z</>
)strr*   )r   r-   rX   r%   tagr   _ids          r   headingzHTMLRenderer.headingj   sZ    CJSyiioGcMC''DczD 4'#-55r    c                      y)N r(   rK   s    r   
blank_linezHTMLRenderer.blank_liner   s    r    c                      y)Nz<hr />
r(   rK   s    r   thematic_breakzHTMLRenderer.thematic_breaku   rM   r    c                     |S r   r(   r8   s     r   
block_textzHTMLRenderer.block_textx   s    r    codeinfoc                     d}|t        |j                               }|r |j                  d d      d   }|d|z   dz   z  }|dz   t        |      z   dz   S )Nz
<pre><code   r   z class="language-r?   rA   z</code></pre>
)r   stripsplitr1   )r   ri   rj   r   langs        r   
block_codezHTMLRenderer.block_code{   sd    tzz|,D::dA&q)D'$.44DczK--0AAAr    c                     d|z   dz   S )Nz<blockquote>
z</blockquote>
r(   r8   s     r   block_quotezHTMLRenderer.block_quote   s    $&):::r    c                 b    | j                   rdt        |j                               z   dz   S |dz   S )NrU   rV   rO   )r   r1   rm   rR   s     r   
block_htmlzHTMLRenderer.block_html   s.    <<;tzz|44x??d{r    c                     d|z   dz   S )Nz<div class="error"><pre>z</pre></div>
r(   r8   s     r   block_errorzHTMLRenderer.block_error   s    )D03CCCr    orderedc                 ~    |r4d}|j                  d      }||dt        |      z   dz   z  }|dz   |z   dz   S d|z   dz   S )	Nz<olstartz start="r?   r]   z</ol>
z<ul>
z</ul>
)r*   r^   )r   r-   rw   r%   r   ry   s         r   listzHTMLRenderer.list   sY    DIIg&E 
SZ/#55%<$&22$**r    c                     d|z   dz   S )Nz<li>z</li>
r(   r8   s     r   	list_itemzHTMLRenderer.list_item   s    }y((r    )TNr   )*__name__
__module____qualname____doc__bool__annotations__r   r   r   r   r   r^   r   r   r   r   r   r   r.   r6   r-   r:   r<   rC   rG   rI   rL   rP   rS   rW   intra   rd   rf   rh   rp   rr   rt   rv   rz   r|   __classcell__)r   s   @r   r   r      s\   5M&,D(76?
#,4xc3h0 6%S/2 t Xd^ _c 
$sCx.   & C  C  ! ! !
'S 'S '/3 /3 /' '3 'x} ' '# C   8S 8S 83 3   
'c 'c '6C 6 6c 6c 6C  s s Bs B(3- B3 B; ; ;s s 
D D D+ +t +c +c +)c )c )r    r   N)typingr   r   r   r   r   r   corer
   r   utilr   r1   r   r   r   r(   r    r   <module>r      s"    @ @ + ( )R)< R)r    