o
    .j,                     @   s   d dl Zd dlZddlT i 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d d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0
ZG d1d2 d2ejeZdS )3    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                       sZ  e Zd ZedZedZh dZd1 fdd	Z fdd	Z	d
d Z
dd Zzejjje_W n ey>   ejjje_Y nw dd Zzejjje_W n eyZ   ejjje_Y nw dd Z fddZedd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zed&jZd'd( Z ed)d* Z!ed+d, Z"d-d. Z#d/d0 Z$  Z%S )2_BaseHTMLProcessorz[<>'"]z&(?!#\d+;|#x[0-9a-fA-F]+;|\w+;)>   brhrcolimgwbrareabaselinkmetaembedframeinputparamtrackkeygensourcecommandisindexbasefontNapplication/xhtml+xmlc                    s(   |r|| _ || _g | _tt|   d S N)encoding_typepiecessuperr   __init__)selfr5   r6   	__class__ D/home/thesage/.local/lib/python3.10/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   s4   | d}|| jv rd| d S d| d | d S )z=
        :type match: Match[str]
        :rtype: str
        r   <z />z></>)groupelements_no_end_tag)r:   matchtagr=   r=   r>   _shorttag_replaced   s   

z$_BaseHTMLProcessor._shorttag_replacec                 C      t r4   NotImplementedErrorr:   ir=   r=   r>   goaheadu      z_BaseHTMLProcessor.goaheadc                 C   rH   r4   rI   rK   r=   r=   r>   __parse_starttag   rN   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:   rL   jr=   r=   r>   parse_starttag   s
   

z!_BaseHTMLProcessor.parse_starttagc                    s^   t jdd|t jd}t d| j|}|dd}|dd}tt| | tt|   d	S )
z6
        :type data: str
        :rtype: None
        z<!((?!DOCTYPE|--|\[))z&lt;!\1)flagsz<([^<>\s]+?)\s*/>z&#39;'z&#34;"N)	resub
IGNORECASErG   replacer8   r   feedclose)r:   datar;   r=   r>   r^      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 v r|  p|fqS ))reltypera   rc   r=   r=   r>   
<listcomp>   s    z6_BaseHTMLProcessor.normalize_attrs.<locals>.<listcomp>)itemssort)attrsattrs_dr=   r=   r>   normalize_attrs   s   z"_BaseHTMLProcessor.normalize_attrsc                 C   s   g }d}|r7|D ]$\}}| dd}| dd}| dd}| jd|}|||f qdd	d
 |D }|| jv rH| jd||f  dS | jd||f  dS )z`
        :type tag: str
        :type attrs: List[Tuple[str, str]]
        :rtype: None
         rB   z&gt;rA   &lt;rY   z&quot;z&amp;c                 s   s     | ]\}}d ||f V  qdS )z %s="%s"Nr=   )rd   keyvaluer=   r=   r>   	<genexpr>   s
    

z6_BaseHTMLProcessor.unknown_starttag.<locals>.<genexpr>z<%s%s />z<%s%s>N)r]   bare_ampersandr[   appendjoinrD   r7   )r:   rF   rm   uattrsstrattrsrr   rs   r=   r=   r>   unknown_starttag   s   


z#_BaseHTMLProcessor.unknown_starttagc                 C   s"   || j vr| jd|  dS dS )z5
        :type tag: str
        :rtype: None
        z</%s>N)rD   r7   rv   )r:   rF   r=   r=   r>   rS      s   
z!_BaseHTMLProcessor.unknown_endtagc                 C   sr   |  }|drt|dd d}nt|}|tv r/| jdttt| dd   dS | jd|  dS )5
        :type ref: str
        :rtype: None
        xr   N   &#%s;)rb   
startswithint_cp1252r7   rv   hexord)r:   refrs   r=   r=   r>   handle_charref   s   
(z!_BaseHTMLProcessor.handle_charrefc                 C   s<   |t jjv s
|dkr| jd|  dS | jd|  dS )r{   apos&%s;z&amp;%sN)htmlentitiesname2codepointr7   rv   )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   rv   r:   textr=   r=   r>   handle_data   s   	z_BaseHTMLProcessor.handle_datac                 C      | j d|  dS )r   z	<!--%s-->Nr   r   r=   r=   r>   handle_comment     z!_BaseHTMLProcessor.handle_commentc                 C   r   )r   z<?%s>Nr   r   r=   r=   r>   	handle_pi  r   z_BaseHTMLProcessor.handle_pic                 C   r   )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   sl   | j }t|}||krdS | ||}|r/| }| }|t| |kr'dS | | fS | | dS )zh
        :type i: int
        :type declstartpos: int
        :rtype: Tuple[Optional[str], int]
        )N)rR   len_new_declname_matchrC   striprb   endr   )r:   rL   declstartposrR   nmsnamer=   r=   r>   
_scan_name'  s   
z_BaseHTMLProcessor._scan_namec                 C      d|  S )5
        :type name: str
        :rtype: str
        r~   r=   r   r=   r=   r>   convert_charref>     z"_BaseHTMLProcessor.convert_charrefc                 C   r   )r   r   r=   r   r=   r=   r>   convert_entityrefG  r   z$_BaseHTMLProcessor.convert_entityrefc                 C   s   d | jS )zGReturn processed HTML as a single string.

        :rtype: str
        rp   )rw   r7   r@   r=   r=   r>   outputP  s   z_BaseHTMLProcessor.outputc              	   C   s<   zt j| |W S  tt jfy   | d |d  Y S w )z2
        :type i: int
        :rtype: int
        rq   r   )sgmllib
SGMLParserparse_declarationAssertionErrorSGMLParseErrorr   rK   r=   r=   r>   r   X  s   
z$_BaseHTMLProcessor.parse_declaration)Nr3   )&__name__
__module____qualname__rZ   compilespecialru   rD   r9   r?   rG   rM   r   r   __code__AttributeError	func_coderQ   rV   r^   staticmethodro   rz   rS   r   r   r   r   r   r   rE   r   r   r   r   r   r   __classcell__r=   r=   r;   r>   r   @   sN    






r   )	html.entitiesr   rZ   sgmlr   r   r   objectr   r=   r=   r=   r>   <module>   sd   	
