
    _f                         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mZmZ d dl	m
Z
mZ d Z G d de          Zd	 Z G d
 d          ZdS )    N)nodes)	Extension)	CallBlockCallExtensionAttribute)TemplateSyntaxErrorTemplateDoesNotExistc                 l    t          | d          r#i }| j        D ]}|                    |           |S | S )Ndicts)hasattrr   update)contextcontext_dictds      K/var/www/html/env/lib/python3.11/site-packages/compressor/offline/jinja2.pyflatten_contextr      sL    w    	# 	#A""""N    c                   6    e Zd ZdZ edg          Zd Zd ZdS )SpacelessExtensionz
    Functional "spaceless" extension equivalent to Django's.

    See: https://github.com/django/django/blob/master/django/template/defaulttags.py
    	spacelessc                     t          |j                  j        }|                    dgd          }t	          j        |                     dg           g g |                              |          S )Nzname:endspacelessT)drop_needle
_spaceless)nextstreamlinenoparse_statementsr   r   call_method
set_lineno)selfparserr   bodys       r   parsezSpacelessExtension.parse!   sj    fm$$+&&(;'<$&OO\2..B
 

*V

	r   c                 X    ddl m}  | |                                                      S )Nr   )strip_spaces_between_tags)django.utils.htmlr%   strip)r    callerr%   s      r   r   zSpacelessExtension._spaceless)   s5    ??????(()9)9:::r   N)__name__
__module____qualname____doc__settagsr#   r    r   r   r   r      sO          3}D  ; ; ; ; ;r   r   c                 ~    	 ddl m} n# t          $ r ddlmc m} Y nw xY w| dk    r|                    |          S dS )z2
    Incomplete emulation of Flask's url_for.
    r   )staticfilesNstatic )'django.contrib.staticfiles.templatetagsr1   ImportErrordjango.templatetags.statictemplatetagsr2   )modfilenamer1   s      r   url_forr:   /   s|    9GGGGGGG 9 9 9888888888889 h!!(+++2s   	 c                   P    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZddZdS )Jinja2Parserz0compressor.contrib.jinja2ext.CompressorExtensionc                 "    || _         || _        d S N)charsetenv)r    r?   r@   s      r   __init__zJinja2Parser.__init__B   s    r   c                    t          j        |d          5 }	 | j                            |                                                    | j                            }na# t          j        $ r!}t          t          |                    d }~wt          j
        $ r!}t          t          |                    d }~ww xY w	 d d d            n# 1 swxY w Y   |S )Nrb)mode)ioopenr@   r#   readdecoder?   jinja2r   strTemplateNotFoundr	   )r    template_namefiletemplatees        r   r#   zJinja2Parser.parseF   s
   W]... 	3$38>>$))++*<*<T\*J*JKK- 2 2 2)#a&&111* 3 3 3*3q662223 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 sA   CAACB<-B		B<B77B<<CCCc                     dS )NTr/   )r    rN   r   s      r   process_templatezJinja2Parser.process_templateQ   s    tr   c                     | j         j                                        }|                    t	          |                     |S r>   )r@   globalscopyr   r   )r    offline_contextr   s      r   get_init_contextzJinja2Parser.get_init_contextT   s9     ("''))77888r   c                     d S r>   r/   r    rN   r   nodes       r   process_nodezJinja2Parser.process_node_   s    r   c                    | j                             t          j                            |                    }t          j                            | j         |i           }t          |          }|                    |          S r>   )r@   compilerI   r   Template	from_coder   render)r    rN   r   r   compiled_nodeflat_contexts         r   _render_nodeszJinja2Parser._render_nodesb   sa    (()>)>u)E)EFF?,,TX}bII&w//|,,,r   c                 :    |                      |||j                  S r>   )rb   r"   rX   s       r   render_nodelistzJinja2Parser.render_nodelisti   s    !!(GTY???r   c                 2    |                      |||g          S r>   )rb   rX   s       r   render_nodezJinja2Parser.render_nodel   s    !!(GdV<<<r   c           	          t          |dt          |dg                     }t          |t          j        j                  r
||j        z   S |S )Nr"   r   )getattr
isinstancerI   r   Ifelse_)r    rY   r"   s      r   get_nodelistzJinja2Parser.get_nodelisto   sG    tVWT7B%?%?@@dFLO,, 	%$*$$r   Nc              #   r  K   |                      |          D ]}t          |t                    rit          |j        t                    rOt          |j        j        t                    r0|j        j        j        | j        k    rd|j        j        _	        |V  | 
                    ||          D ]}|V  d S )N_compress_forced)
block_name)rl   ri   r   callr   rY   r   
identifierCOMPRESSOR_IDname
walk_nodes)r    rY   ro   r   s       r   rt   zJinja2Parser.walk_nodesw   s      %%d++ 	 	D4++
ty$//
 ty~/ABB
 IN-1CCC&8	#



 OODZOHH  DJJJJ	 	r   )NN)r)   r*   r+   rr   rA   r#   rQ   rV   rZ   rb   rd   rf   rl   rt   r/   r   r   r<   r<   ?   s        FM  	 	 	  	 	 	  - - -@ @ @= = =       r   r<   )rE   rI   
jinja2.extr   r   jinja2.nodesr   r   r   compressor.exceptionsr   r	   r   r   r:   r<   r/   r   r   <module>rx      s   				                        < < < < < < < < < < K K K K K K K K	 	 	; ; ; ; ; ; ; ;.   D D D D D D D D D Dr   