U
    7ÄT_”  ã                   @   s$   d dl mZmZ G dd„ deƒ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   úF/tmp/pip-unpacked-wheel-bbdw8hci/sqlparse/engine/statement_splitter.pyÚ__init__   s    zStatementSplitter.__init__c                 C   s(   d| _ d| _d| _d| _g | _d| _dS )z/Set the filter attributes to its default valuesFr   N)Ú_in_declareÚ
_is_createÚ_begin_depthÚ
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  _| jr¤dS dS |d
krÆt	d| jd ƒ| _dS |dkrâ| jrâ| jdkrâdS |dkrîdS dS )z<Get the new split level (increase, decrease or remain equal)ú(é   ú)éÿÿÿÿr   ZCREATETZDECLAREZBEGINZEND)ZIFZFORZWHILE)zEND IFzEND FORz	END WHILE)
ÚTÚPunctuationÚKeywordÚupperZDDLÚ
startswithr   r   r   Úmax)r   ÚttypeÚvalueZunifiedr   r   r	   Ú_change_splitlevel   s<    
ÿÿz$StatementSplitter._change_splitlevelc                 c   s¤   t jt jjf}|D ]x\}}| jr>||kr>t | j¡V  |  ¡  |  j	|  
||¡7  _	| j t ||¡¡ | j	dkr|t jkr|dkrd| _q| jr t | j¡V  dS )zProcess the streamr   ú;TN)r   Ú
WhitespaceÚCommentÚSingler   r   Z	Statementr   r   r   r   ÚappendÚTokenr   )r   ÚstreamZ	EOS_TTYPEr   r   r   r   r	   ÚprocessP   s    zStatementSplitter.processN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   r$   r   r   r   r	   r      s
   
4r   N)Zsqlparser   r   r   Úobjectr   r   r   r   r	   Ú<module>	   s   