o
    m¨Êhz  ã                   @   sº   d Z ddlmZ ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlZe d¡Zdd„ Zdd„ Zdd„ ZdS )z±
Based on "TinyMCE Compressor PHP" from MoxieCode.

http://tinymce.moxiecode.com/

Copyright (c) 2008 Jason Davies
Licensed under the terms of the MIT License (see LICENSE.txt)
é    )ÚdatetimeN)Úsettings)Úcache)ÚHttpResponse)Úrender_to_string)Úcompress_string)Úpatch_vary_headersÚpatch_response_headers)Ú
smart_text)Ú	http_datez^[a-zA-Z][a-zA-Z0-9_/-]*$c              	   C   sŠ   dt jv s
dt jv rddlm} | tj d| ¡¡}n	tj tj j	| ¡}zt
|ƒ}z
| ¡ W | ¡  W S | ¡  w  ttfyD   Y dS w )NÚstaticfileszdjango.contrib.staticfilesr   )ÚfindersÚtiny_mceÚ )r   ÚINSTALLED_APPSÚdjango.contrib.staticfilesr   ÚfindÚosÚpathÚjoinÚtinymceÚJS_ROOTÚopenÚreadÚcloseÚIOErrorÚ	TypeError)Úfilenamer   Ú	file_pathÚf© r    úD/var/www/html/env/lib/python3.10/site-packages/tinymce/compressor.pyÚget_file_contents   s   

ÿr"   c                 C   s   | dkrg S |   d¡S )Nr   ú,)Úsplit)Ústrr    r    r!   Úsplit_commas/   s   
r&   c                 C   sz  t | j dd¡ƒ}t | j dd¡ƒ}t | j dd¡ƒ}| j dd¡dk}| j dd¡dk}| j dd¡d	kr8d	p9d}g }tƒ }d
|d< |sS| tddtjjiƒ¡ |S t	|dgƒ t
 ¡ }	|	 d¡|d< d || | ¡}
t |
¡}|d ur®d|v r’| j d¡}||d kr’d|_d|_d|d< |S d|v r®| j d¡}||d kr®d|_d|_d|d< |S tjjddœ}| d t |¡¡¡ dg}|D ]
}| d |¡¡ qÅ|D ]}| d ||¡¡ |D ]}| d ||¡¡ qßqÒ|D ]}| d ||¡¡ |D ]}| d  ||¡¡ qûqî|D ]}t |¡�s�q
| td! |¡ƒ¡ �q
| d" d# |¡¡¡ g }t|ƒD ]H\}}z| | d$¡¡ W �q1 t�yR   | t|ƒ¡ Y �q1 t�yy   z
| | d%¡¡ W n t�yu   td& || ¡ƒ ‚ w Y �q1w |�r•t d' d(d)„ |D ƒ¡ƒ}d*|d+< t!t"|ƒƒ|d< | |¡ d,}t#||ƒ | $d¡�s¬t%ƒ |d< t &|
|d | dd¡d-œ¡ |S ).NÚpluginsr   Ú	languagesÚthemesÚjsÚtrueÚcompressÚsuffixÚ_srcztext/javascriptzContent-Typeztinymce/tiny_mce_gzip.jsÚbase_urlzAccept-Encodingz%a, %d %b %Y %H:%M:%S GMTÚDateú|ÚETagÚHTTP_IF_NONE_MATCHi0  Ú0zContent-LengthúLast-ModifiedÚHTTP_IF_MODIFIED_SINCE)Úbaser-   zvar tinyMCEPreInit={!s};r   z
langs/{!s}zplugins/{!s}/editor_plugin{!s}zplugins/{!s}/langs/{!s}zthemes/{!s}/editor_template{!s}zthemes/{!s}/langs/{!s}z{!s}.jszltinymce.each("{!s}".split(","), function(f){{tinymce.ScriptLoader.markDone(tinyMCE.baseURL+"/"+f+".js");}});r#   zlatin-1úutf-8z{!s} is nor latin-1 nor utf-8.ó    c                 S   s   g | ]}|  d ¡‘qS )r8   )Úencode)Ú.0Úcr    r    r!   Ú
<listcomp>˜   s    ÿz#gzip_compressor.<locals>.<listcomp>ÚgzipzContent-Encodingi / )r5   r2   )'r&   ÚGETÚgetr   Úwriter   r   r   ÚJS_BASE_URLr   r   ÚutcnowÚstrftimer   r   ÚMETAÚstatus_codeÚcontentÚappendÚformatÚjsonÚdumpsÚsafe_filename_reÚmatchr"   Ú	enumerateÚdecodeÚAttributeErrorr
   ÚUnicodeDecodeErrorÚ	ExceptionÚprintr   r%   Úlenr	   Ú
has_headerr   Úset)Úrequestr'   r(   r)   ÚisJSr,   r-   rG   ÚresponseÚnowÚcacheKeyÚ	cacheDataÚif_none_matchÚif_modified_sinceÚtinyMCEPreInitÚfilesÚlangÚpluginÚthemer   Úunicode_contentÚir<   Útimeoutr    r    r!   Úgzip_compressor5   s¶   ÿ
þÿÿÿþþÿþ
ÿ



þrg   )Ú__doc__r   r   ÚrerJ   Údjango.confr   Údjango.core.cacher   Údjango.httpr   Údjango.template.loaderr   Údjango.utils.textr   Údjango.utils.cacher   r	   Údjango.utils.encodingr
   Údjango.utils.httpr   Útinymce.settingsr   ÚcompilerL   r"   r&   rg   r    r    r    r!   Ú<module>   s$    	
