
    f                     :    d dl mZ d dlmZmZmZ  G d de      Zy)   )BaseRenderer)escape	striptagssafe_entityc                       e Zd ZdZdZdZdZd" fd	Z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d#d
e	de	de	fdZd#d
e	d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	fdZde	fdZde	fdZd
e	de	fdZd#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de	fd Zd
e	de	fd!Z  xZ!S )$HTMLRendererz+A renderer for converting Markdown to HTML.html)zjavascript:z	vbscript:zfile:zdata:)zdata:image/gif;zdata:image/png;zdata:image/jpeg;zdata:image/webp;c                 F    t         t        |           || _        || _        y N)superr   __init___allow_harmful_protocols_escape)selfr   allow_harmful_protocols	__class__s      Q/var/www/cvtools/html/venv/lib/python3.12/site-packages/mistune/renderers/html.pyr   zHTMLRenderer.__init__   s    lD*,(?%    c                     | 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   tokenstatefuncr   texts         r   render_tokenzHTMLRenderer.render_token   s    f.		'"E><D5 %%eJ&7?D}e}$v&&&:r   urlreturnc                    | j                   du r|S |j                         }| j                   r&|j                  t        | j                               r|S |j                  | j                        r|j                  | j
                        sy|S )zhEnsure the given URL is safe. This method is used for rendering
        links, images, and etc.
        Tz#harmful-link)r   lower
startswithtupleHARMFUL_PROTOCOLSGOOD_DATA_PROTOCOLS)r   r#   _urls      r   safe_urlzHTMLRenderer.safe_url-   ss     ((D0Jyy{((OOE$"?"?@AJ??4112 8 89"
r   r!   c                 F    | j                   rt        |      S t        |      S r   )r   escape_textr   r   r!   s     r   r!   zHTMLRenderer.text>   s    <<t$$4  r   c                     d|z   dz   S )Nz<em>z</em>r   r/   s     r   emphasiszHTMLRenderer.emphasisC   s    }w&&r   c                     d|z   dz   S )Nz<strong>z	</strong>r   r/   s     r   strongzHTMLRenderer.strongF   s    D ;..r   c                 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>)r,   r   )r   r!   r#   titless        r   linkzHTMLRenderer.linkI   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="r5   r6   z />)r,   r.   r   r   )r   r!   r#   r8   srcaltr9   s          r   imagezHTMLRenderer.imageO   s]    mmC )D/*3*S036k%00366A5yr   c                     d|z   dz   S )Nz<code>z</code>r   r/   s     r   codespanzHTMLRenderer.codespanW   s    $**r   c                      y)Nz<br />
r   r   s    r   	linebreakzHTMLRenderer.linebreakZ       r   c                      y)N
r   rB   s    r   	softbreakzHTMLRenderer.softbreak]   s    r   c                 4    | j                   rt        |      S |S r   )r   r.   r   r	   s     r   inline_htmlzHTMLRenderer.inline_html`   s    <<t$$r   c                     d|z   dz   S )N<p></p>
r   r/   s     r   	paragraphzHTMLRenderer.paragraphe   s    t|h&&r   levelc                     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="r5   r7   z</>
)strr   )r   r!   rO   r   tagr	   _ids          r   headingzHTMLRenderer.headingh   sZ    CJSyiioGcMC''DczD 4'#-55r   c                      y)N r   rB   s    r   
blank_linezHTMLRenderer.blank_linep   s    r   c                      y)Nz<hr />
r   rB   s    r   thematic_breakzHTMLRenderer.thematic_breaks   rD   r   c                     |S r   r   r/   s     r   
block_textzHTMLRenderer.block_textv   s    r   codec                     d}|t        |j                               }|r |j                  d d      d   }|d|z   dz   z  }|dz   t        |      z   dz   S )Nz
<pre><code       z class="language-r5   r7   z</code></pre>
)r   stripsplitr.   )r   r`   infor	   langs        r   
block_codezHTMLRenderer.block_codey   sd    tzz|,D::dA&q)D'$.44DczK--0AAAr   c                     d|z   dz   S )Nz<blockquote>
z</blockquote>
r   r/   s     r   block_quotezHTMLRenderer.block_quote   s    $&):::r   c                 b    | j                   rdt        |j                               z   dz   S |dz   S )NrL   rM   rF   )r   r.   rd   rI   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   r/   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="r5   rT   z</ol>
z<ul>
z</ul>
)r   rU   )r   r!   ro   r   r	   rq   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   r/   s     r   	list_itemzHTMLRenderer.list_item   s    }y((r   )TNr   )"__name__
__module____qualname____doc__NAMEr)   r*   r   r"   rU   r,   r!   r1   r3   r:   r>   r@   rC   rG   rJ   rN   intrX   r[   r]   r_   rh   rj   rl   rn   boolrr   rt   __classcell__)r   s   @r   r   r      s   5D
&C C "! ! !
'S 'S '/3 /3 /' '3 's '# C  +S +S +3 3   
'c 'c '6C 6 6 6C  s s Bs B# B; ; ;s s 
D D D+ +t + +)c )c )r   r   N)corer   utilr   r.   r   r   r   r   r   r   <module>r      s     @ @R)< R)r   