U
    qe+                     @   sl   d dl Zd dlZddlT dddddd	d
dddddddddddddddddddddZG d d! d!ejeZdS )"    N   )*u   €u   ‚u   ƒu   „u   …u   †u   ‡u   ˆu   ‰u   Šu   ‹u   Œu   Žu   ‘u   ’u   “u   ”u   •u   –u   —u   ˜u   ™u   šu   ›u   œu   žu   Ÿ)                                                                                 c                       s  e Zd ZedZedZddddddd	d
dddddddddddhZdC fdd	Z fddZ	dd Z
dd Zzejjje_W n  ek
r   ejjje_Y nX d d! Zzejjje_W n  ek
r   ejjje_Y nX d"d# Z fd$d%Zed&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zed8jZd9d: Z ed;d< Z!ed=d> Z"d?d@ Z#dAdB Z$  Z%S )D_BaseHTMLProcessorz[<>'"]z&(?!#\d+;|#x[0-9a-fA-F]+;|\w+;)areabasebasefontbrcolcommandembedframehrimginputisindexkeygenlinkmetaparamsourcetrackwbrNapplication/xhtml+xmlc                    s(   |r
|| _ || _g | _tt|   d S N)encoding_typepiecessuperr   __init__)selfr5   r6   	__class__ m/mounts/lovelace/software/anaconda3/envs/qiime2-shotgun-2024.2/lib/python3.8/site-packages/feedparser/html.pyr9   Y   s
    z_BaseHTMLProcessor.__init__c                    s   g | _ tt|   d S r4   )r7   r8   r   resetr:   r;   r=   r>   r?   `   s    z_BaseHTMLProcessor.resetc                 C   s8   | d}|| jkr d| d S d| d | d S dS )z=
        :type match: Match[str]
        :rtype: str
        r   <z />z></>N)groupelements_no_end_tag)r:   matchtagr=   r=   r>   _shorttag_replaced   s    

z$_BaseHTMLProcessor._shorttag_replacec                 C   s   t d S r4   NotImplementedErrorr:   ir=   r=   r>   goaheadu   s    z_BaseHTMLProcessor.goaheadc                 C   s   t d S r4   rH   rJ   r=   r=   r>   Z__parse_starttag   s    z#_BaseHTMLProcessor.__parse_starttagc                 C   sB   |  |}| jdkr>|dkr>| j|d | dkr>| | j |S )Nr3      z/>)"_BaseHTMLProcessor__parse_starttagr6   rawdataunknown_endtaglasttag)r:   rK   jr=   r=   r>   parse_starttag   s
    

z!_BaseHTMLProcessor.parse_starttagc                    s\   t dd|t j}t d| j|}|dd}|dd}tt| | tt|   dS )	z6
        :type data: str
        :rtype: None
        z<!((?!DOCTYPE|--|\[))z&lt;!\1z<([^<>\s]+?)\s*/>z&#39;'z&#34;"N)	resub
IGNORECASErG   replacer8   r   feedclose)r:   datar;   r=   r>   rZ      s    z_BaseHTMLProcessor.feedc                 C   s4   | s| S dd | D }dd |  D } |   | S )zZ
        :type attrs: List[Tuple[str, str]]
        :rtype: List[Tuple[str, str]]
        c                 S   s   i | ]\}}|  |qS r=   lower.0kvr=   r=   r>   
<dictcomp>   s      z6_BaseHTMLProcessor.normalize_attrs.<locals>.<dictcomp>c                 S   s(   g | ] \}}||d kr|  p |fqS ))reltyper]   r_   r=   r=   r>   
<listcomp>   s   z6_BaseHTMLProcessor.normalize_attrs.<locals>.<listcomp>)itemssort)attrsZattrs_dr=   r=   r>   normalize_attrs   s    z"_BaseHTMLProcessor.normalize_attrsc                 C   s   g }d}|rn|D ]H\}}| dd}| dd}| dd}| jd|}|||f qdd	d
 |D }|| jkr| jd||f  n| jd||f  dS )z`
        :type tag: str
        :type attrs: List[Tuple[str, str]]
        :rtype: None
         rB   z&gt;rA   &lt;rU   z&quot;z&amp;c                 s   s   | ]\}}d ||f V  qdS )z %s="%s"Nr=   )r`   keyvaluer=   r=   r>   	<genexpr>   s   z6_BaseHTMLProcessor.unknown_starttag.<locals>.<genexpr>z<%s%s />z<%s%s>N)rY   bare_ampersandrW   appendjoinrD   r7   )r:   rF   ri   ZuattrsZstrattrsrm   rn   r=   r=   r>   unknown_starttag   s    


z#_BaseHTMLProcessor.unknown_starttagc                 C   s   || j kr| jd|  dS )z5
        :type tag: str
        :rtype: None
        z</%s>N)rD   r7   rq   )r:   rF   r=   r=   r>   rP      s    
z!_BaseHTMLProcessor.unknown_endtagc                 C   sp   |  }|dr&t|dd d}nt|}|tkr\| jdttt| dd   n| jd|  dS )5
        :type ref: str
        :rtype: None
        xr   N   &#%s;)r^   
startswithint_cp1252r7   rq   hexord)r:   refrn   r=   r=   r>   handle_charref   s    
&z!_BaseHTMLProcessor.handle_charrefc                 C   s:   |t jjks|dkr&| jd|  n| jd|  dS )rt   apos&%s;z&amp;%sN)htmlentitiesname2codepointr7   rq   )r:   r}   r=   r=   r>   handle_entityref   s    z#_BaseHTMLProcessor.handle_entityrefc                 C   s   | j | dS )6
        :type text: str
        :rtype: None
        Nr7   rq   r:   textr=   r=   r>   handle_data   s    	z_BaseHTMLProcessor.handle_datac                 C   s   | j d|  dS )r   z	<!--%s-->Nr   r   r=   r=   r>   handle_comment  s    z!_BaseHTMLProcessor.handle_commentc                 C   s   | j d|  dS )r   z<?%s>Nr   r   r=   r=   r>   	handle_pi  s    z_BaseHTMLProcessor.handle_pic                 C   s   | j d|  dS )r   z<!%s>Nr   r   r=   r=   r>   handle_decl  s    
z_BaseHTMLProcessor.handle_declz[a-zA-Z][-_.a-zA-Z0-9:]*\s*c                 C   sp   | j }t|}||krdS | ||}|r^| }| }|t| |krNdS | | fS | | dS dS )zh
        :type i: int
        :type declstartpos: int
        :rtype: Tuple[Optional[str], int]
        )NN)rO   len_new_declname_matchrC   stripr^   endr   )r:   rK   declstartposrO   nmsnamer=   r=   r>   
_scan_name'  s    
z_BaseHTMLProcessor._scan_namec                 C   s   d|  S )5
        :type name: str
        :rtype: str
        rw   r=   r   r=   r=   r>   convert_charref>  s    z"_BaseHTMLProcessor.convert_charrefc                 C   s   d|  S )r   r   r=   r   r=   r=   r>   convert_entityrefG  s    z$_BaseHTMLProcessor.convert_entityrefc                 C   s   d | jS )zGReturn processed HTML as a single string.

        :rtype: str
        rk   )rr   r7   r@   r=   r=   r>   outputP  s    z_BaseHTMLProcessor.outputc                 C   s>   zt j| |W S  t jk
r8   | d |d  Y S X dS )z2
        :type i: int
        :rtype: int
        rl   r   N)sgmllib
SGMLParserparse_declarationZSGMLParseErrorr   rJ   r=   r=   r>   r   X  s
    
z$_BaseHTMLProcessor.parse_declaration)Nr3   )&__name__
__module____qualname__rV   compilespecialrp   rD   r9   r?   rG   rL   r   r   __code__AttributeError	func_coderN   rS   rZ   staticmethodrj   rs   rP   r~   r   r   r   r   r   rE   r   r   r   r   r   r   __classcell__r=   r=   r;   r>   r   @   sn   






r   )	html.entitiesr   rV   sgmlrz   r   r   objectr   r=   r=   r=   r>   <module>   s>   