
    X_j'                         d dl Zd dlZddlmZ 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 d1 d2ej                  ZdS )3    N   )sgmllib   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                   :    e Zd Z ej        d          Z ej        d          Zh dZd fd	Z fdZ	d Z
 fd	Z fd
Zed             Zd Zd Zd Zd Zd Zd Zd Zd Z ej        d          j        Zd Zed             Zed             Zd Zd Z xZS )_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                     |r|| _         || _        g | _        t          t          |                                            d S N)encoding_typepiecessuperr!   __init__)selfr8   r9   	__class__s      H/tmp/sma-radar-test-venv/lib/python3.11/site-packages/feedparser/html.pyr<   z_BaseHTMLProcessor.__init__Y   sC     	%$DM
 $''0022222    c                 d    g | _         t          t          |                                            d S r7   )r:   r;   r!   reset)r=   r>   s    r?   rB   z_BaseHTMLProcessor.reset`   s-     $''--/////r@   c                 j    |                     d          }|| j        v rd|z   dz   S d|z   dz   |z   dz   S )z=
        :type match: Match[str]
        :rtype: str
        r   < />z></>)groupelements_no_end_tag)r=   matchtags      r?   _shorttag_replacez$_BaseHTMLProcessor._shorttag_replaced   sI     kk!nn$***9u$$9u$s*S00r@   c                     t                                          |          }| j        dk    r6|dk    r0| j        |dz
  |         dk    r|                     | j                   |S )Nr5      z/>)r;   parse_starttagr9   rawdataunknown_endtaglasttag)r=   ijr>   s      r?   rN   z!_BaseHTMLProcessor.parse_starttagp   se    GG""1%%:0001uuac!e,44##DL111r@   c                 x   t          j        dd|t           j                  }t          j        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
IGNORECASErK   replacer;   r!   feedclose)r=   datar>   s     r?   r\   z_BaseHTMLProcessor.feedw   s     v.
DVVVv*D,BDII||GS))||GS)) $'',,T222 $''--/////r@   c                     | s| S d | D             }d |                                 D             } |                                  | S )zZ
        :type attrs: List[Tuple[str, str]]
        :rtype: List[Tuple[str, str]]
        c                 >    i | ]\  }}|                                 |S  lower.0kvs      r?   
<dictcomp>z6_BaseHTMLProcessor.normalize_attrs.<locals>.<dictcomp>   s&    222DAq17799a222r@   c                 L    g | ]!\  }}||d v r|                                 p|f"S ))reltyperb   rd   s      r?   
<listcomp>z6_BaseHTMLProcessor.normalize_attrs.<locals>.<listcomp>   sH     
 
 
1 _$27a8
 
 
r@   )itemssort)attrsattrs_ds     r?   normalize_attrsz"_BaseHTMLProcessor.normalize_attrs   s`      	L 32E222
 

 
 
 	

r@   c                    g }d}|r|D ]y\  }}|                     dd          }|                     dd          }|                     dd          }| j                            d|          }|                    ||f           zd                    d	 |D                       }|| j        v r"| j                            d||d
           dS | j                            d||d           dS )z`
        :type tag: str
        :type attrs: List[Tuple[str, str]]
        :rtype: None
         rF   z&gt;rD   &lt;rW   z&quot;z&amp;c              3   .   K   | ]\  }}d |d|dV  dS ) z="rW   Nra   )re   keyvalues      r?   	<genexpr>z6_BaseHTMLProcessor.unknown_starttag.<locals>.<genexpr>   sI        C "cc555)     r@   rE   N)r[   bare_ampersandrY   appendjoinrH   r:   )r=   rJ   ro   uattrsstrattrsrw   rx   s          r?   unknown_starttagz#_BaseHTMLProcessor.unknown_starttag   s&     
	# , ,
Uc622c622c844+//??sEl++++ww  "(    H $***KSS(((;<<<<<K339:::::r@   c                 V    || j         vr| j                            d|z             dS dS )z5
        :type tag: str
        :rtype: None
        z</%s>N)rH   r:   r{   )r=   rJ   s     r?   rP   z!_BaseHTMLProcessor.unknown_endtag   s:     d...Kw}----- /.r@   c           	         |                                 }|                    d          rt          |dd         d          }nt          |          }|t          v rL| j                            dt          t          t          |                             dd         z             dS | j                            d|z             dS )5
        :type ref: str
        :rtype: None
        xr   N   &#%s;)rc   
startswithint_cp1252r:   r{   hexord)r=   refrx   s      r?   handle_charrefz!_BaseHTMLProcessor.handle_charref   s     iikk>># 	ABB$$EEHHEGKwS-@-@)A)A!"")EEFFFFFKw}-----r@   c                     |t           j        j        v s|dk    r| j                            d|z             dS | j                            d|z             dS )r   apos&%s;z&amp;%sN)htmlentitiesname2codepointr:   r{   )r=   r   s     r?   handle_entityrefz#_BaseHTMLProcessor.handle_entityref   s\     $-...#--Kv|,,,,,Ky3/////r@   c                 :    | j                             |           dS )6
        :type text: str
        :rtype: None
        Nr:   r{   r=   texts     r?   handle_dataz_BaseHTMLProcessor.handle_data   s      	4     r@   c                 @    | j                             d|z             dS )r   z	<!--%s-->Nr   r   s     r?   handle_commentz!_BaseHTMLProcessor.handle_comment   s%     	;-.....r@   c                 @    | j                             d|z             dS )r   z<?%s>Nr   r   s     r?   	handle_piz_BaseHTMLProcessor.handle_pi   s$     	7T>*****r@   c                 @    | j                             d|z             dS )r   z<!%s>Nr   r   s     r?   handle_declz_BaseHTMLProcessor.handle_decl   s$     	7T>*****r@   z[a-zA-Z][-_.a-zA-Z0-9:]*\s*c                 l   | j         }t          |          }||k    rdS |                     ||          }|rh|                                }|                                }|t          |          z   |k    rdS |                                |                                fS |                     |           dS )zh
        :type i: int
        :type declstartpos: int
        :rtype: Tuple[Optional[str], int]
        )N)rO   len_new_declname_matchrG   striprc   endr   )r=   rR   declstartposrO   nmsnames           r?   
_scan_namez_BaseHTMLProcessor._scan_name  s     ,LL668$$Wa00 				A7799DCFF
q  x::<<((W%%%8r@   c                     d| z  S )5
        :type name: str
        :rtype: str
        r   ra   r   s    r?   convert_charrefz"_BaseHTMLProcessor.convert_charref#  s     ~r@   c                     d| z  S )r   r   ra   r   s    r?   convert_entityrefz$_BaseHTMLProcessor.convert_entityref,  s     }r@   c                 6    d                     | j                  S )zGReturn processed HTML as a single string.

        :rtype: str
        rs   )r|   r:   )r=   s    r?   outputz_BaseHTMLProcessor.output5  s     wwt{###r@   c                     	 t           j                            | |          S # t          t           j        f$ r |                     d           |dz   cY S w xY w)z2
        :type i: int
        :rtype: int
        rt   r   )r   
SGMLParserparse_declarationAssertionErrorSGMLParseErrorr   )r=   rR   s     r?   r   z$_BaseHTMLProcessor.parse_declaration=  sd    	%77a@@@ 67 	 	 	V$$$Q3JJJ	s   " 0AA)Nr5   )__name__
__module____qualname__rX   compilespecialrz   rH   r<   rB   rK   rN   r\   staticmethodrq   r   rP   r   r   r   r   r   r   rI   r   r   r   r   r   r   __classcell__)r>   s   @r?   r!   r!   @   s       bj&&GRZ BCCN  ,3 3 3 3 3 30 0 0 0 0
1 
1 
1    0 0 0 0 0   \&; ; ;8	. 	. 	.. . .&0 0 0	! 	! 	!/ / /+ + +
+ 
+ 
+ %"*%CDDJ  .   \   \$ $ $      r@   r!   )html.entitiesr   rX   sgmlr   r   r   r!   ra   r@   r?   <module>r      sm  8     				        	
             !" #$ 
									7  >H H H H H+ H H H H Hr@   