U
    Œû<iÿ  ã                   @   s"   d dl mZmZ G dd„ dƒZdS )é    )ÚsqlÚtokensc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚStatementSplitterz1Filter that split stream at individual statementsc                 C   s   |   ¡  d S ©N)Ú_reset©Úself© r	   úb/var/www/html/mysite/school/venv/lib/python3.8/site-packages/sqlparse/engine/statement_splitter.pyÚ__init__   s    zStatementSplitter.__init__c                 C   s4   d| _ d| _d| _d| _d| _d| _g | _d| _dS )z/Set the filter attributes to its default valuesFr   N)Ú_in_declareÚ_in_caseÚ
_is_createÚ_begin_depthÚ_seen_beginÚ
consume_wsr   Úlevelr   r	   r	   r
   r      s    zStatementSplitter._resetc                 C   s  |t jkr|dkrdS |t jkr,|dkr,dS |t jkr:dS | ¡ }|t jjkrb| d¡rbd| _dS |dkr„| jr„| jdkr„d| _dS |d	kr®|  jd7  _d| _	| jrªdS dS |d
krÚ| j
sÐtd| jd ƒ| _nd| _
dS |dk�r| j�r| jdk�r|dk�rd| _
dS |dk�rdS dS )z<Get the new split level (increase, decrease or remain equal)ú(é   ú)éÿÿÿÿr   ÚCREATETÚDECLAREÚBEGINÚENDF)ÚIFÚFORÚWHILEÚCASEr   )zEND IFzEND FORz	END WHILE)ÚTÚPunctuationÚKeywordÚupperÚDDLÚ
startswithr   r   r   r   r   Úmax)r   ÚttypeÚvalueZunifiedr	   r	   r
   Ú_change_splitlevel   sF    

ÿÿ

z$StatementSplitter._change_splitlevelc                 c   s>  t jt jjf}|D ]ú\}}| jr>||kr>t | j¡V  |  ¡  |  j	|  
||¡7  _	| j t ||¡¡ |t jkr´|dkr´| jr’td| jd ƒ| _d| _| j	dkr²| jdkr²d| _q|t jkrÖ| ¡ d dkrÖd| _q|t jt jjt jjfkr|t jk�r| ¡ dksd| _q| j�r:tdd	„ | jD ƒƒ�s:t | j¡V  d
S )zProcess the streamú;r   r   FTÚGOr   c                 s   s   | ]}|j V  qd S r   )Úis_whitespace)Ú.0Útr	   r	   r
   Ú	<genexpr>„   s     z,StatementSplitter.process.<locals>.<genexpr>N)r   Ú
WhitespaceÚCommentÚSingler   r   Ú	Statementr   r   r   r(   ÚappendÚTokenr    r   r%   r   r!   ÚsplitÚ	Multiliner"   Úall)r   ÚstreamZ	EOS_TTYPEr&   r'   r	   r	   r
   ÚprocessT   s2    	ÿþ
þzStatementSplitter.processN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r(   r9   r	   r	   r	   r
   r      s
   7r   N)Úsqlparser   r   r   r   r	   r	   r	   r
   Ú<module>   s   