o
    /'hú+  ã                   @   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ÚcolÚinputZembedÚhrZkeygenZimgÚtrackÚmetaZbasefontZareaÚbaseZwbrÚparamÚcommandÚsourceZisindexÚframeÚlinkNúapplication/xhtml+xmlc                    s(   |r|| _ || _g | _tt| ƒ ¡  d S ©N)ÚencodingÚ_typeÚpiecesÚsuperr   Ú__init__)Úselfr.   r/   ©Ú	__class__© úEC:\Users\shubh\Videos\agent\nova\Lib\site-packages\feedparser/html.pyr2   Y   s
   z_BaseHTMLProcessor.__init__c                    s   g | _ tt| ƒ ¡  d S r-   )r0   r1   r   Úreset©r3   r4   r6   r7   r8   `   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)r3   ÚmatchÚtagr6   r6   r7   Ú_shorttag_replaced   s   

z$_BaseHTMLProcessor._shorttag_replacec                 C   ó   t ‚r-   ©ÚNotImplementedError©r3   Úir6   r6   r7   Úgoaheadu   ó   z_BaseHTMLProcessor.goaheadc                 C   rA   r-   rB   rD   r6   r6   r7   Z__parse_starttag€   rG   z#_BaseHTMLProcessor.__parse_starttagc                 C   sB   |   |¡}| jdkr|dkr| j|d |… dkr|  | j¡ |S )Nr,   é   z/>)Ú"_BaseHTMLProcessor__parse_starttagr/   ÚrawdataÚunknown_endtagÚlasttag)r3   rE   Újr6   r6   r7   Ú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Ú
IGNORECASEr@   Úreplacer1   r   ÚfeedÚclose)r3   Údatar4   r6   r7   rU   ’   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 r6   ©Úlower©Ú.0ÚkÚvr6   r6   r7   Ú
<dictcomp>«   s    z6_BaseHTMLProcessor.normalize_attrs.<locals>.<dictcomp>c                 S   s(   g | ]\}}||d v r|  ¡ p|f‘qS ))ÚrelÚtyperX   rZ   r6   r6   r7   Ú
<listcomp>¬   s    ÿÿz6_BaseHTMLProcessor.normalize_attrs.<locals>.<listcomp>)ÚitemsÚsort)ÚattrsZattrs_dr6   r6   r7   Ú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
        Ú r;   z&gt;r:   ú&lt;rP   z&quot;z&amp;c                 s   s    � | ]\}}d ||f V  qdS )z %s="%s"Nr6   )r[   ÚkeyÚvaluer6   r6   r7   Ú	<genexpr>Æ   s
   € 
ÿ
ÿz6_BaseHTMLProcessor.unknown_starttag.<locals>.<genexpr>z<%s%s />z<%s%s>N)rT   Úbare_ampersandrR   ÚappendÚjoinr=   r0   )r3   r?   rd   ZuattrsZstrattrsrh   ri   r6   r6   r7   Ú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)r=   r0   rl   )r3   r?   r6   r6   r7   rK   Ï   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;)rY   Ú
startswithÚintÚ_cp1252r0   rl   ÚhexÚord)r3   Úrefri   r6   r6   r7   Ú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 )ro   Zaposú&%s;z&amp;%sN)ÚhtmlÚentitiesÚname2codepointr0   rl   )r3   rx   r6   r6   r7   Úhandle_entityrefí   s   z#_BaseHTMLProcessor.handle_entityrefc                 C   s   | j  |¡ dS )ú6
        :type text: str
        :rtype: None
        N©r0   rl   ©r3   Útextr6   r6   r7   Úhandle_dataú   s   	z_BaseHTMLProcessor.handle_datac                 C   ó   | j  d| ¡ dS )r   z	<!--%s-->Nr€   r�   r6   r6   r7   Úhandle_comment  ó   z!_BaseHTMLProcessor.handle_commentc                 C   r„   )r   z<?%s>Nr€   r�   r6   r6   r7   Ú	handle_pi  r†   z_BaseHTMLProcessor.handle_pic                 C   r„   )r   z<!%s>Nr€   r�   r6   r6   r7   Ú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éÿÿÿÿ)rJ   ÚlenÚ_new_declname_matchr<   ÚstriprY   Úendrƒ   )r3   rE   ÚdeclstartposrJ   ÚnÚmÚsÚnamer6   r6   r7   Ú
_scan_name'  s   
z_BaseHTMLProcessor._scan_namec                 C   ó   d|  S )ú5
        :type name: str
        :rtype: str
        rr   r6   ©r’   r6   r6   r7   Úconvert_charref>  ó   z"_BaseHTMLProcessor.convert_charrefc                 C   r”   )r•   rz   r6   r–   r6   r6   r7   Úconvert_entityrefG  r˜   z$_BaseHTMLProcessor.convert_entityrefc                 C   s   d  | j¡S )zGReturn processed HTML as a single string.

        :rtype: str
        rf   )rm   r0   r9   r6   r6   r7   ÚoutputP  s   z_BaseHTMLProcessor.outputc                 C   s8   zt j | |¡W S  t jy   |  d¡ |d  Y S w )z2
        :type i: int
        :rtype: int
        rg   r   )ÚsgmllibÚ
SGMLParserÚparse_declarationZSGMLParseErrorrƒ   rD   r6   r6   r7   r�   X  s   
ýz$_BaseHTMLProcessor.parse_declaration)Nr,   )&Ú__name__Ú
__module__Ú__qualname__rQ   ÚcompileZspecialrk   r=   r2   r8   r@   rF   r›   rœ   Ú__code__ÚAttributeErrorÚ	func_coderI   rN   rU   Ústaticmethodre   rn   rK   ry   r~   rƒ   r…   r‡   rˆ   r>   r‹   r“   r—   r™   rš   r�   Ú__classcell__r6   r6   r4   r7   r   @   sN    

ýý




r   )	Úhtml.entitiesr{   rQ   Zsgmlru   r›   rœ   Úobjectr   r6   r6   r6   r7   Ú<module>   sd   ÿþýüûúùø	÷
öõôóòñðïå