o
    ~¨Êh¶
  ã                   @   sr   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ i Z	e j
dd… dkr+de	d	< G d
d„ deejjjƒZdS )é    N)Úsix©Ú
smart_text)ÚParserError)Ú
ParserBaseé   )é   é   FÚconvert_charrefsc                   @   s\   e Z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
dd„ Zdd„ ZdS )ÚDefaultHtmlParserc              
   C   sŒ   t jjjj| fi t¤Ž || _g | _g | _d | _	z|  
| j¡ |  ¡  W d S  tyE } z|j}| j ¡ | }td|t|ƒf ƒ‚d }~ww )Nz2Error while initializing HtmlParser: %s (line: %s))r   ÚmovesÚhtml_parserÚ
HTMLParserÚ__init__ÚHTML_PARSER_ARGSÚcontentÚ
_css_elemsÚ	_js_elemsÚ_current_tagÚfeedÚcloseÚ	ExceptionÚlinenoÚ
splitlinesr   Úrepr)Úselfr   Úerrr   Úline© r   úV/var/www/html/env/lib/python3.10/site-packages/compressor/parser/default_htmlparser.pyr      s   €ýzDefaultHtmlParser.__init__c                 C   sz   |  ¡ }|dv r(|dkr| j}n|dkr| j}| ||t|ƒddœ¡ || _d S |dkr;| j ||t|ƒd dœ¡ d S d S )N)ÚstyleÚscriptr    r!   Ú )ÚtagÚattrsÚ
attrs_dictÚtextÚlink)Úlowerr   r   ÚappendÚdictr   )r   r#   r$   Útagsr   r   r   Úhandle_starttag    s*   ü
üÿz!DefaultHtmlParser.handle_starttagc                 C   s&   | j r| j | ¡ krd | _ d S d S d S ©N)r   r(   )r   r#   r   r   r   Úhandle_endtag6   s   
ÿzDefaultHtmlParser.handle_endtagc                 C   s<   | j dkr|| jd d< d S | j dkr|| jd d< d S d S )Nr    éÿÿÿÿr&   r!   )r   r   r   )r   Údatar   r   r   Úhandle_data:   s
   

ÿzDefaultHtmlParser.handle_datac                 C   ó   | j S r-   )r   ©r   r   r   r   Ú	css_elems@   ó   zDefaultHtmlParser.css_elemsc                 C   r2   r-   )r   r3   r   r   r   Újs_elemsC   r5   zDefaultHtmlParser.js_elemsc                 C   ó   |d S )Nr#   r   ©r   Úelemr   r   r   Ú	elem_nameF   ó   zDefaultHtmlParser.elem_namec                 C   r7   )Nr%   r   r8   r   r   r   Úelem_attribsI   r;   zDefaultHtmlParser.elem_attribsc                 C   s   t |d ƒS )Nr&   r   r8   r   r   r   Úelem_contentL   s   zDefaultHtmlParser.elem_contentc                 C   s^   i }|  |¡ d|d< t|d ƒr!dd dd„ |d D ƒ¡ |d< |d dkr+d	| S d
| S )Nr"   r$   z %sú c                 S   s   g | ]
\}}d ||f ‘qS )z%s="%s"r   )Ú.0ÚnameÚvaluer   r   r   Ú
<listcomp>T   s    z.DefaultHtmlParser.elem_str.<locals>.<listcomp>r#   r'   z<%(tag)s%(attrs)s />z$<%(tag)s%(attrs)s>%(text)s</%(tag)s>)ÚupdateÚlenÚjoin)r   r9   r#   r   r   r   Úelem_strO   s   
 zDefaultHtmlParser.elem_strN)Ú__name__Ú
__module__Ú__qualname__r   r,   r.   r1   r4   r6   r:   r<   r=   rF   r   r   r   r   r      s    r   )ÚsysÚdjango.utilsr   Údjango.utils.encodingr   Úcompressor.exceptionsr   Úcompressor.parserr   r   Úversion_infor   r   r   r   r   r   r   r   Ú<module>   s    