o
    ~¨Êh£  ã                   @   s4   d dl mZ d dlmZmZmZ G dd„ deƒZdS )é    )Úsettings)Ú
CompressorÚSOURCE_HUNKÚSOURCE_FILEc                       s<   e Zd Zd‡ fdd„	Zdd„ Z‡ fdd„Zdd
d„Z‡  ZS )ÚJsCompressorNÚjsc                    s$   t tjƒ}tt| ƒ ||||¡ d S )N)Úlistr   ÚCOMPRESS_JS_FILTERSÚsuperr   Ú__init__)ÚselfÚcontentÚoutput_prefixÚcontextÚfilters©Ú	__class__© ú?/var/www/html/env/lib/python3.10/site-packages/compressor/js.pyr      s   
zJsCompressor.__init__c           	      C   s  | j r| j S g | _| j ¡ D ]v}| j |¡}d|v r-|  |d ¡}|  |¡}t|||f}n
t| j 	|¡d |f}| j  
|¡ d|v rDd}n	d|v rKd}nd}| joX| jd d |k}|rjtjrj| jd d	 j  
|¡ q| j| j |¡| jd
�}|j  
|¡ | j 
||f¡ q| j S )NÚsrcÚasyncz asyncÚdeferz deferÚ éÿÿÿÿr   é   )r   r   )Úsplit_contentÚextra_nodesÚparserÚjs_elemsÚelem_attribsÚget_basenameÚget_filenamer   r   Úelem_contentÚappendr   ÚCOMPRESS_ENABLEDr   Úelem_strr   )	r   ÚelemÚattribsÚbasenameÚfilenamer   ÚextraÚappend_to_previousÚnoder   r   r   Úsplit_contents   s6   
ÿ
ÿzJsCompressor.split_contentsc                    s„   t jst js| dd¡r7|  ¡  t| dƒr7g }| jD ]\}}|j d|i¡ | 	|j
|i |¤Ž¡ qd |¡S tt| ƒj
|i |¤ŽS )NÚforcedFr   r*   Ú
)r   r$   ÚCOMPRESS_PRECOMPILERSÚgetr-   Úhasattrr   Úextra_contextÚupdater#   ÚoutputÚjoinr
   r   )r   ÚargsÚkwargsÚretr*   Úsubnoder   r   r   r5   *   s   
ÿ

zJsCompressor.outputFc                 C   s4   g }|   |¡D ]}tjs|rd| }| |¡ q|S )zk
        Passes each hunk (file or code) to the 'input' methods
        of the compressor filters.
        ú;)Úhunksr   r$   r#   )r   r.   r   Úhunkr   r   r   Úfilter_input6   s   
zJsCompressor.filter_input)Nr   N)F)Ú__name__Ú
__module__Ú__qualname__r   r-   r5   r>   Ú__classcell__r   r   r   r   r      s
    r   N)Úcompressor.confr   Úcompressor.baser   r   r   r   r   r   r   r   Ú<module>   s    