o
    ì6Wj,  ã                   @   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__© ú^/home/esfera/Documents/content_generation/venv/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   ÿþýüûúùø	÷
öõôóòñðïå