a
    n`                     @   s>   d dl Z d dlZd dlZd dlZd dlmZ G dd dZdS )    N)Kriktc                   @   sf   e Zd Zdd ZdddZddd	Zdd
dZdd Zdd Zdd Z	dddZ
dddZdd ZdS )Nafrac                 C   s@   || _ i | _i | _i | jd< i | jd< g d| _t| j | _d S )Npt),;/z--)efnsepsr   krikt)selferimp r   !/home/ernad/ernad/python/nafra.py__init__   s    


zNafra.__init__
new_to_oldc                 C   s*   | j jd d }t|}t|dd}|S )z-> list of nafra filesnafraz
/*.json.gzT)reverse)r	   dirsglobsorted)r   orderglob_string	out_fufisr   r   r   r   C   s    
zNafra.out_fufisFNc                 C   s`   | j  }d}|D ]H}tj|}|dd }|dur@||kr@q||krL|}| j||d qdS )z#-> makes update for all krikt files r   
   N)
do_verbose)r   r   ospathbasenameupdate_for_krikt_fufi)r   r   do_only_issuedateZkrikt_fufismax_issuedatefufibana	issuedater   r   r   
update_allM   s    
zNafra.update_allc                 C   s   t |}|d u r(tj|}|d }n| jjd d | d }t ||gsb|r^td|  dS |rrtd|  t 	|}i | _
|D ]}| || | qt| j
dkrtd	| tjd
 dS t || j
 i | _
d S )Nz/nafra.json.gzr   r   z.json.gzznafra doneres Fznafra loads r   znafras got nothing from )file)filerget_issuedater   r    dirnamer	   r   donereprintloadr
   
feed_papidlensysstderrdump)r   r%   r   r'   fudiout_fufidpapidr   r   r   r"   [   s,    


zNafra.update_for_krikt_fufic                 C   s4   |  | dD ] }||vrq| ||| | qdS )N)r   Tr   PT)
reset_data	deal_with)r   r   r8   letterr   r   r   r0      s    
zNafra.feed_papidc                 C   s*   i | j |< i | j | d< i | j | d< d S )Nr   r   )r
   )r   r8   r   r   r   r;      s    
zNafra.reset_datac                 C   s0   | j }|j|kr| j}|D ]}|||| qdS )z send to deal with upper or lowerN)deal_with_upperlowerdeal_with_lower)r   r=   datar8   Zdovr   r   r   r<      s
    
zNafra.deal_withc                 C   s   |  }d|vrdS | j}d}d}|D ]}	||	}
|
|kr&|	}|
}q&|du rt|r^td|  | ||g| |gS ||}|D ]$}| j|}d|vrq|d}q| ||| |S )z deals krkits that need splitting Nr   z
no sep in .)	r?   r   countr.   	add_partssplitr   process_fieldrstrip)r   arearB   r8   r   Zllr   Z	max_countZmax_sepsepZ	count_seppartspartr   r   r   r>      s0    

zNafra.deal_with_upperc                 C   s@   | j |}|d}|d}d|vr,dS | ||g| dS )z*deals with the krikt that don't need splitrD   rC   N)r   rH   rI   rF   )r   rJ   rB   r8   r   rM   r   r   r   r@      s    

zNafra.deal_with_lowerc                 C   s   |d u rd S |D ]j}| j |}| }d|vr2q| }|| j| | vr`d| j| | |< q| j| | |  d7  < qd S )NrC      )r   rH   stripr?   r
   )r   rJ   rL   r8   rM   r   r   r   rF      s    zNafra.add_parts)r   )FN)F)F)F)__name__
__module____qualname__r   r   r(   r"   r0   r;   r<   r>   r@   rF   r   r   r   r   r      s   (



D	

	r   )r   r   r2   r*   r   r   r   r   r   r   r   <module>   s
   