o
    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 ]$}tj|}|dd }|dur ||kr q	||kr&|}| 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_issuedate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s1|r/td|  dS |r9td|  t 	|}i | _
|D ]
}| || | qCt| j
dkr`t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   r9   letterr   r   r   r1      s   
zNafra.feed_papidc                 C   s*   i | j |< i | j | d< i | j | d< d S )Nr   r   )r
   )r   r9   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>   datar9   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 r:|r/td|  | ||g| |gS ||}|D ]}| j|}d|vrNqA|d}qA| ||| |S )z deals krkits that need splitting Nr   z
no sep in .)	r@   r   countr/   	add_partssplitr   process_fieldrstrip)r   arearC   r9   r   Zllr   	max_countZmax_sepsepZ	count_seppartspartr   r   r   r?      s2   

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 splitrE   rD   N)r   rI   rJ   rG   )r   rK   rC   r9   r   rO   r   r   r   rA      s   

zNafra.deal_with_lowerc                 C   s   |d u rd S |D ]5}| j |}| }d|vrq| }|| j| | vr0d| j| | |< q| j| | |  d7  < qd S )NrD      )r   rI   stripr@   r
   )r   rK   rN   r9   rO   r   r   r   rG      s   zNafra.add_parts)r   )FN)F)__name__
__module____qualname__r   r   r)   r"   r1   r<   r=   r?   rA   rG   r   r   r   r   r      s    
(


D
	
	r   )r   r   r3   r+   r   r   r   r   r   r   r   <module>   s   