B
    b                 @   s$   d Z ddlmZ G dd deZdS )z%Turn an mmCIF file into a dictionary.    )	as_handlec               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	
MMCIF2Dictz+Parse a mmCIF file and return a dictionary.c       
   	   C   s>  ddg| _ ddg| _t|}d}d}| |}yt|}W n tk
rR   dS X |dd | |dd < d}d}x|D ]}| d	krd
}g }	d}d}qznp|r|dr|dks|| dkr|dkrd}ng | |< |	| |d7 }qzn | |	||   | |d7 }qz|dkr|}qz|g| |< d}qzW W dQ R X dS )zParse a mmCIF file and return a dictionary.

        Arguments:
         - file - name of the PDB file OR an open filehandle

        '" 	FN   r   Zloop_T_   )	quote_charswhitespace_charsr   	_tokenizenextStopIterationlower
startswithappend)
selffilenamehandleZ	loop_flagkeytokenstokeninkeys r   1lib/python3.7/site-packages/Bio/PDB/MMCIF2Dict.py__init__   sF    






zMMCIF2Dict.__init__c             c   s   d}d }d}xt |D ]\}}|| jkrD|r|sd}||| V  q|| jkr|sh|sh|}d}|d }q||kr|d t|ks||d  | jkrd }d}||| V  q|dkr|sd S |sd}|}qW |r||d  V  |rtd| d S )NFr   Tr
   #zLine ended with quote open: )	enumerater   r   len
ValueError)r   lineZin_tokenZquote_open_charZstart_ir   cr   r   r   
_splitlineE   s6    


"zMMCIF2Dict._splitlinec             c   s   d}x|D ]}d}| dr q
n| dr|dd   g}xd|D ]T}| }| drd|V  |dd  }|r|d | jkrtdP || qBW td	| | E d H  q
W |rtd
d S )NTFr   ;r
   
r   zMissing whitespacezMissing closing semicolonzEmpty file.)r   rstripjoinr   r"   r   r%   strip)r   r   emptyr#   Ztoken_bufferr   r   r   r   h   s(    




zMMCIF2Dict._tokenizeN)__name__
__module____qualname____doc__r   r%   r   r   r   r   r   r      s   4#r   N)r/   ZBio.Filer   dictr   r   r   r   r   <module>   s   