
    iKj                         d dl mZmZmZmZmZmZ d dl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	ed
efdZy)    )AnyClassVarDictOptionalTupleLiteral)unquote   )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:zfeed:zjar:zlivescript:zmocha:zms-its:zmk:zres:zview-source:.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      g/Users/ahmed/devFolder/Ultron/claude-voice/.venv/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                 `   | j                   du rt        |      S t        |      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_unquote_urllower
startswithtupler   r   )r   r0   _urls      r    safe_urlzHTMLRenderer.safe_url:   s     ((D0s##C &&(((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   r2   r   r   r.   s     r    r.   zHTMLRenderer.textI   s    <<t$$4  r!   c                     d|z   dz   S )Nz<em>z</em>r)   r:   s     r    emphasiszHTMLRenderer.emphasisN   s    }w&&r!   c                     d|z   dz   S )Nz<strong>z	</strong>r)   r:   s     r    strongzHTMLRenderer.strongQ   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>)r8   r   )r   r.   r0   r?   ss        r    linkzHTMLRenderer.linkT   sI    $--,,s2k%00366A3w~&&r!   c                     | j                  |      }t        |      }d|z   dz   |z   dz   }|r|dt        |      z   dz   z  }|dz   S )Nz
<img src="z" alt="rA   rB   z />)r8   r   r   )r   r.   r0   r?   srcaltrD   s          r    imagezHTMLRenderer.imageZ   sX    mmC o3*S036k%00366A5yr!   c                 $    dt        |      z   dz   S )Nz<code>z</code>r2   r:   s     r    codespanzHTMLRenderer.codespanb   s    +d++i77r!   c                      y)Nz<br />
r)   r   s    r    	linebreakzHTMLRenderer.linebreake       r!   c                      y)N
r)   rN   s    r    	softbreakzHTMLRenderer.softbreakh   s    r!   c                 4    | j                   rt        |      S |S r   )r   r2   r   r   s     r    inline_htmlzHTMLRenderer.inline_htmlk   s    <<t$$r!   c                     d|z   dz   S )N<p></p>
r)   r:   s     r    	paragraphzHTMLRenderer.paragraphp   s    t|h&&r!   levelr&   c                     dt        |      z   }d|z   }|j                  d      }|r|dt        |      z   dz   z  }|dz   |z   dz   |z   dz   S )	Nh<idz id="rA   rC   z</>
)strr+   r2   )r   r.   r[   r&   tagr   _ids          r    headingzHTMLRenderer.headings   s`    CJSyiioGk#..44DczD 4'#-55r!   c                      y)N r)   rN   s    r    
blank_linezHTMLRenderer.blank_line{   s    r!   c                      y)Nz<hr />
r)   rN   s    r    thematic_breakzHTMLRenderer.thematic_break~   rP   r!   c                     |S r   r)   r:   s     r    
block_textzHTMLRenderer.block_text   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-rA   rC   z</code></pre>
)r   stripsplitr2   )r   rl   rm   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)   r:   s     r    block_quotezHTMLRenderer.block_quote   s    $&):::r!   c                 b    | j                   rdt        |j                               z   dz   S |dz   S )NrX   rY   rR   )r   r2   rp   rU   s     r    
block_htmlzHTMLRenderer.block_html   s.    <<;tzz|44x??d{r!   c                 $    dt        |      z   dz   S )Nz<div class="error"><pre>z</pre></div>
rK   r:   s     r    block_errorzHTMLRenderer.block_error   s    )K,==@PPPr!   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="rA   r`   z</ol>
z<ul>
z</ul>
)r+   ra   )r   r.   rz   r&   r   r|   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__bool__annotations__r   r   r   r   r   ra   r   r   r   r   r   r   r/   r8   r.   r<   r>   rE   rI   rL   rO   rS   rV   rZ   intrd   rg   ri   rk   rs   ru   rw   ry   r}   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 
Q Q Q+ +t +c +c +)c )c )r!   r   r0   r   c                 P    t        d      D ]  }t        |       }|| k(  r | S |}  | S )N   )ranger	   )r0   _decodeds      r    r3   r3      s6    1X#,c>J 	 
 Jr!   N)typingr   r   r   r   r   r   urllib.parser	   corer   r   utilr   r2   r   r   r   ra   r3   r)   r!   r    <module>r      s9    @ @   + ( )Z)< Z)zc c r!   