
    g
                        d Z  G d d      Zd Zd Z edd        edd        ed	d
        edd        edd        edd        edd        edd        edd        edd        edd        edd        edd       dZej                         D ]  \  ZZee_          G d de      Z	 G d de      Z
 e
       Z
 G d d      Zy)z-
Parser and utilities for the smart 'if' tag
c                   8    e Zd ZdZdZdZdxZZd Zd Z	d Z
d Zy)	TokenBasezi
    Base class for operators and literals, mainly for debugging and for throwing
    syntax errors.
    Nc                 >    |j                  d| j                  z        )Nz.Not expecting '%s' in this position in if tag.error_classidselfparsers     o/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/template/smartif.pynudzTokenBase.nud   s!      <twwF
 	
    c                 >    |j                  d| j                  z        )Nz/Not expecting '%s' as infix operator in if tag.r   )r	   leftr
   s      r   ledzTokenBase.led   s!      =G
 	
r   c                     | j                   S )zH
        Return what to display in error messages for this node
        )r   r	   s    r   displayzTokenBase.display"   s     wwr   c                     | j                   | j                  | j                  fD cg c]  }|t        |       }}ddj	                  |      z   dz   S c c}w N( ))r   firstsecondstrjoin)r	   xouts      r   __repr__zTokenBase.__repr__(   sQ     $T[[ASA!Q]s1vASSXXc]"S(( Ts
   AA)__name__
__module____qualname____doc__r   valuer   r   r   r   r   r    r   r   r   r      s1    
 
BEEF

)r   r   c                 .      G  fddt               }|S )ze
    Create an infix operator, given a binding power and a function that
    evaluates the node.
    c                   (    e Zd ZW  Z fdZfdZy)infix.<locals>.Operatorc                 B    || _         |j                        | _        | S N)r   
expressionr   )r	   r   r
   bps      r   r   zinfix.<locals>.Operator.led6   s!    DJ ++B/DKKr   c                 `    	  || j                   | j                        S # t        $ r Y yw xY wNF)r   r   	Exceptionr	   contextfuncs     r   evalzinfix.<locals>.Operator.eval;   s3    GTZZ==  	s   ! 	--N)r    r!   r"   lbpr   r3   r,   r2   s   r   Operatorr(   3   s    	
	r   r6   r   r,   r2   r6   s   `` r   infixr9   -   s    9 " Or   c                 .      G  fddt               }|S )ze
    Create a prefix operator, given a binding power and a function that
    evaluates the node.
    c                   (    e Zd ZW  Z fdZfdZy)prefix.<locals>.Operatorc                 B    |j                        | _        d | _        | S r*   )r+   r   r   )r	   r
   r,   s     r   r   zprefix.<locals>.Operator.nudP   s!    **2.DJDKKr   c                 J    	  || j                         S # t        $ r Y yw xY wr.   )r   r/   r0   s     r   r3   zprefix.<locals>.Operator.evalU   s+    GTZZ00 s    	""N)r    r!   r"   r4   r   r3   r5   s   r   r6   r<   M   s    	
	r   r6   r7   r8   s   `` r   prefixr?   G   s    9  Or      c                 J    |j                  |       xs |j                  |       S r*   r3   r1   r   ys      r   <lambda>rE   b   s    )KAFF7O)Kr      c                 J    |j                  |       xr |j                  |       S r*   rB   rC   s      r   rE   rE   c   s    !&&/*MaffWo*Mr      c                 &    |j                  |        S r*   rB   )r1   r   s     r   rE   rE   d   s    AFF7O(;r   	   c                 F    |j                  |       |j                  |       v S r*   rB   rC   s      r   rE   rE   e   s    AFF7O)Kr   c                 F    |j                  |       |j                  |       vS r*   rB   rC   s      r   rE   rE   f   s    QVVG_AFF7O-Sr   
   c                 F    |j                  |       |j                  |       u S r*   rB   rC   s      r   rE   rE   g   s    !&&/QVVG_*Lr   c                 F    |j                  |       |j                  |       uS r*   rB   rC   s      r   rE   rE   h   s    affWoQVVG_.Tr   c                 H    |j                  |       |j                  |       k(  S r*   rB   rC   s      r   rE   rE   i       !&&/QVVG_*Lr   c                 H    |j                  |       |j                  |       k7  S r*   rB   rC   s      r   rE   rE   j   rQ   r   c                 H    |j                  |       |j                  |       kD  S r*   rB   rC   s      r   rE   rE   k       166'?)Jr   c                 H    |j                  |       |j                  |       k\  S r*   rB   rC   s      r   rE   rE   l   rQ   r   c                 H    |j                  |       |j                  |       k  S r*   rB   rC   s      r   rE   rE   m   rT   r   c                 H    |j                  |       |j                  |       k  S r*   rB   rC   s      r   rE   rE   n   rQ   r   )orandnotinnot inisis notz==z!=>z>=<z<=c                   6    e Zd ZdZdZdZd Zd Zd Zd Z	d Z
y	)
LiteralzO
    A basic self-resolvable object similar to a Django template variable.
    literal    c                     || _         y r*   r$   r	   r$   s     r   __init__zLiteral.__init__   s	    
r   c                 ,    t        | j                        S r*   )reprr$   r   s    r   r   zLiteral.display   s    DJJr   c                     | S r*   r%   r   s     r   r   zLiteral.nud   s    r   c                     | j                   S r*   rf   )r	   r1   s     r   r3   zLiteral.eval   s    zzr   c                 <    d| j                   d| j                  dS r   )r   r$   r   s    r   r   zLiteral.__repr__   s     GGTZZ00r   N)r    r!   r"   r#   r   r4   rh   r   r   r3   r   r%   r   r   rb   rb   v   s,     
B
C 1r   rb   c                       e Zd ZdZd Zy)EndTokenrd   c                 $    |j                  d      )Nz'Unexpected end of expression in if tag.)r   r   s     r   r   zEndToken.nud   s      !JKKr   N)r    r!   r"   r4   r   r%   r   r   ro   ro      s    
CLr   ro   c                   6    e Zd ZeZd Zd Zd Zd ZddZ	d Z
y)	IfParserc                 P   t        |      }g }d}||k  ro||   }|dk(  r|dz   |k  r||dz      dk(  rd}|dz  }n|dk(  r|dz   |k  r||dz      dk(  rd}|dz  }|j                  | j                  |             |dz  }||k  ro|| _        d| _        | j                         | _        y )Nrd   r]      rZ   r^   r[   r\   )lenappendtranslate_tokentokenspos
next_tokencurrent_token)r	   rx   
num_tokensmapped_tokensitokens         r   rh   zIfParser.__init__   s    [
*n1IE}Q!3q1u8N Q%AEJ$66!a%=D;P Q  !5!5e!<=FA *n $!__.r   c                 p    	 t         |   } |       S # t        t        f$ r | j                  |      cY S w xY wr*   )	OPERATORSKeyError	TypeError
create_var)r	   r   ops      r   rw   zIfParser.translate_token   s?    	5!B 4K )$ 	*??5))	*s   	  55c                     | j                   t        | j                        k\  rt        S | j                  | j                      }| xj                   dz  c_         |S )Nrt   )ry   ru   rx   ro   r	   retvals     r   rz   zIfParser.next_token   s@    88s4;;''O[[*FHHMHMr   c                     | j                         }| j                  t        ur,| j                  d| j                  j	                         z        |S )Nz$Unused '%s' at end of if expression.)r+   r{   ro   r   r   r   s     r   parsezIfParser.parse   sM    "X-""69K9K9S9S9UU  r   c                 6   | j                   }| j                         | _         |j                  |       }|| j                   j                  k  rM| j                   }| j                         | _         |j	                  ||       }|| j                   j                  k  rM|S r*   )r{   rz   r   r4   r   )r	   rbptr   s       r   r+   zIfParser.expression   s    !__.uuT{D&&***""A!%!2D55t$D D&&*** r   c                     t        |      S r*   )rb   rg   s     r   r   zIfParser.create_var   s    u~r   N)rd   )r    r!   r"   
ValueErrorr   rh   rw   rz   r   r+   r   r%   r   r   rr   rr      s%    K/(r   rr   N)r#   r   r9   r?   r   itemskeyr   r   rb   ro   rr   r%   r   r   <module>r      s  ) )B46 K
LMN!;<
K
LAST
L
MBTU
L
M
L
M	rJ	K
L
M	rJ	K
L
M	"  GCBE !1i 16Ly L :; ;r   