a
    còfþ  ã                   @   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	   ú_/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/sqlparse/engine/statement_splitter.pyÚ__init__   s    zStatementSplitter.__init__c                 C   s.   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Ú
consume_wsr   Úlevelr   r	   r	   r
   r      s    zStatementSplitter._resetc                 C   s  |t ju r|dkrdS |t ju r,|dkr,dS |t jvr:dS | ¡ }|t jju rb| d¡rbd| _dS |dkr„| jr„| jdkr„d| _dS |d	kr¨|  jd7  _| jr¤dS dS |d
krÔ| j	sÊt
d| jd ƒ| _nd| _	dS |dv �r| j�r| jdk�r|dk�rd| _	dS |dv �rdS dS )z<Get the new split level (increase, decrease or remain equal)ú(é   ú)éÿÿÿÿr   ZCREATETZDECLAREZBEGINZENDF)ZIFZFORZWHILEÚCASEr   )zEND IFzEND FORz	END WHILE)ÚTÚPunctuationÚKeywordÚupperZDDLÚ
startswithr   r   r   r   Úmax)r   ÚttypeÚvalueZunifiedr	   r	   r
   Ú_change_splitlevel   sD    

ÿÿ

z$StatementSplitter._change_splitlevelc                 c   sÒ   t jt jjf}|D ]’\}}| jr>||vr>t | j¡V  |  ¡  |  j	|  
||¡7  _	| j t ||¡¡ | j	dkr„|t ju r„|dksž|t ju r| ¡ d dkrd| _q| jrÎtdd„ | jD ƒƒsÎt | j¡V  dS )zProcess the streamr   ú;ZGOTc                 s   s   | ]}|j V  qd S r   )Zis_whitespace)Ú.0Útr	   r	   r
   Ú	<genexpr>r   ó    z,StatementSplitter.process.<locals>.<genexpr>N)r   Ú
WhitespaceÚCommentÚSingler   r   Z	Statementr   r   r   r   ÚappendÚTokenr   r   ÚsplitÚall)r   ÚstreamZ	EOS_TTYPEr   r   r	   r	   r
   ÚprocessR   s    ÿÿzStatementSplitter.processN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r-   r	   r	   r	   r
   r      s
   6r   N)Zsqlparser   r   r   r   r	   r	   r	   r
   Ú<module>   s   