
    Mh>                     n    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dS )	    )AnyClassVarDictOptionalTupleLiteral   )BaseRenderer
BlockState)escape)safe_entity	striptagsc            	       v    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	<   d0d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d1dededee         defdZd1d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"d1d'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 )2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_PROTOCOLSTNr   allow_harmful_protocolsreturnc                 r    t          t          |                                            || _        || _        d S N)superr   __init___allow_harmful_protocolsr   )selfr   r   	__class__s      V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mistune/renderers/html.pyr   zHTMLRenderer.__init__   s2    lD!!**,,,(?%    tokenstatec                    |                      |d                   }|                    d          }d|v r	|d         }n5d|v r|                     |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>><DD5  %%eJ&7??DD t}}e}}$tvv 	4&&&&&4::r    urlc                 ^   | j         du rt          |          S |                                }| j         r6|                    t	          | j                             rt          |          S |                    | j                  r|                    | j                  sdS 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0s###yy{{( 	$T__U4C`=a=a-b-b 	$s###??4122 	#4??4Kc;d;d 	#"?3r    r-   c                 L    | 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                     d|                      |          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   sT    $--,,,s2 	7k%000366A3w~&&r    c                     |                      |          }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   sm    mmC  )D//**3*S036 	7k%0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                     dS )Nz<br />
r(   r   s    r   	linebreakzHTMLRenderer.linebreak\       zr    c                     dS )N
r(   rK   s    r   	softbreakzHTMLRenderer.softbreak_   s    tr    c                 2    | 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   }|                    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   sc    CJJSyiioo 	(GcMC''DczD 4'#-55r    c                     dS )N r(   rK   s    r   
blank_linezHTMLRenderer.blank_liner   s    rr    c                     dS )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          |                                          }|r'|                    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{   st    tzz||,,D 	5::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                 h    | j         r'dt          |                                          z   dz   S |dz   S )NrU   rV   rO   )r   r1   rm   rR   s     r   
block_htmlzHTMLRenderer.block_html   s7    < 	@;tzz||4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                     |r<d}|                     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   sc     	3DIIg&&E 
SZZ/#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5MMM&,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 8 8 83    3         
'c 'c ' ' ' '6C 6 6c 6c 6 6 6 6C        s s    B Bs B(3- B3 B B B B; ; ; ; ; ;s s    
D D D 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) R) R)< R) R) R) R) R)r    